<?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.2 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sehgal-scim-delta-query-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="SCIM Delta Query">SCIM Delta Query</title>
    <seriesInfo name="Internet-Draft" value="draft-sehgal-scim-delta-query-02"/>
    <author initials="A." surname="Sehgal" fullname="Anjali Sehgal">
      <organization>Amazon Web Services</organization>
      <address>
        <email>anjalisg@amazon.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>
    <date year="2025" month="January" day="09"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 36?>

<t>This document defines extensions to the SCIM 2.0 protocol that enable clients to poll service providers for changes that have occurred since a delta (or watermark) token was issued by the service provider.</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-sehgal-scim-delta-query"/>.</t>
    </note>
  </front>
  <middle>
    <?line 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Adoption of SCIM 2.0 has trended strongly in favor of "push" model implementations where SCIM clients push data to SCIM service providers. Scenarios reliant on a client regularly retrieving, or "pulling", data regarding a large number of resources from a service provider have faced challenges at scale. One of the challenges facing SCIM client implementers when trying to retrieve data from service providers is that there are limited options to improve efficiency by only retrieving resources that have changed since they were last observed by the client. ETags and the SCIM meta.lastModified attribute are sometimes considered as options here, but both have limitations and have not seen widespread adoption for use in tracking changes in SCIM.</t>
      <t>This document aims to alleviate the efficiency problems related to not being able to omit unchanged resources from query responses by introducing extensions to the SCIM 2.0 protocol functionality to query for responses that only contain SCIM resources that have changed since an earlier time. The concept of retrieving only new changes exists in numerous other APIs and databases, but does not exist in the core SCIM 2.0 specifications. By improving SCIM's functionality in this area, scenarios reliant on clients pulling large amounts of data on a regular basis can be made significantly more efficient, lowering resource consumption for service providers and clients to return and parse query responses, respectively.</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?>

<t>This document utilizes line folding within JSON examples using a single backslash ('') character as outlined in <xref target="RFC8792"/>.</t>
      </section>
    </section>
    <section anchor="definitions">
      <name>Definitions</name>
      <dl>
        <dt>Delta Token</dt>
        <dd>
          <t>An opaque value issued by the SCIM service provider that provides a point of reference for the service provider to later return representations of resources that were changed after the point that the token's value references.</t>
        </dd>
        <dt>Change / Changed Resource</dt>
        <dd>
          <t>A SCIM resource that has been created, deleted, or updated.</t>
        </dd>
      </dl>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>The delta query functionality defined in this document is intended to function as follows:</t>
      <ul spacing="normal">
        <li>
          <t>The SCIM client obtains a delta token from a SCIM service provider.</t>
        </li>
        <li>
          <t>The SCIM client makes a query against the SCIM service provider that contains the delta token.</t>
        </li>
        <li>
          <t>The SCIM service provider responds with all resources that match the query parameters and have changed since the provided delta token was issued.</t>
        </li>
        <li>
          <t>The SCIM service provider includes a new delta token with the final page of results it returns.</t>
        </li>
        <li>
          <t>The SCIM client then optionally uses the newly provided delta token to repeat this process at a future time.</t>
        </li>
      </ul>
    </section>
    <section anchor="delta-query-components">
      <name>Delta Query Components</name>
      <t>This document defines extensions to existing schemas defined in the SCIM 2.0 specifications <xref target="RFC7643"/> and <xref target="RFC7644"/> and introduces endpoints, query parameters and protocol elements.</t>
      <section anchor="new-path-extension-endpoints">
        <name>New Path Extension Endpoints</name>
        <t>This document defines a set of extensions to the list of SCIM endpoints in <xref section="3.2" sectionFormat="of" target="RFC7644"/>. The following endpoints are added to the list:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Resource</th>
              <th align="left">Endpoint</th>
              <th align="left">Operations</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Delta Token</td>
              <td align="left">[prefix]/.deltaToken</td>
              <td align="left">GET</td>
              <td align="left">Acquire a delta token.</td>
            </tr>
            <tr>
              <td align="left">Delta Query</td>
              <td align="left">[prefix]/.delta</td>
              <td align="left">POST</td>
              <td align="left">Search from system root or within a resource endpoint for resources that have changed since the acquisition of the delta token.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="delta-tokens">
        <name>Delta Tokens</name>
        <t>Delta tokens may be returned from HTTP requests to the /.deltaToken path extension preceded by a SCIM resource endpoint (e.g.: /Users) or the server root. Delta tokens can also be returned as part of the service provider's response to a query redeeming another delta token.</t>
        <t>Delta tokens provided in response to /.deltaToken requests against the server root <bcp14>MUST</bcp14> be valid for delta query requests made against all resource types on the service provider that support delta query. Delta tokens provided in response to a /.deltaToken request against a specific SCIM resource endpoint are only required to be valid for requests made against that specific resource endpoint.</t>
        <t>Response to /.deltaToken requests <bcp14>MUST</bcp14> be identified using the following URI: "urn:ietf:params:scim:api:messages:2.0:delta:token". The following single-valued attributes are defined for responses:</t>
        <dl>
          <dt>value</dt>
          <dd>
            <t>A string value containing a delta token.  <bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt>expiry</dt>
          <dd>
            <t>A dateTime value representing the time that the delta token value will be valid until. Service providers <bcp14>SHOULD</bcp14> attempt to provide an accurate expiry value. Service providers <bcp14>MAY</bcp14> have implementation-specific logic that invalidates delta tokens prior to the provided expiry time.  <bcp14>RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <section anchor="acquiring-an-initial-delta-token">
          <name>Acquiring an initial delta token</name>
          <t>A client wishing to obtain an initial delta token from a service provider that supports delta query can make a GET request to the /.deltaToken endpoint, as shown in the below example:</t>
          <artwork><![CDATA[
GET Users/.deltaToken
Host: example.com
Accept: application/scim+json
Authorization: Bearer foo
]]></artwork>
          <t>The service provider's response would return a token similar to the following example:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
    "schemas":"urn:ietf:params:scim:api:messages:2.0:delta:token",
    "value":"eyJkZWx0YVRva2VuIjoiQVJkZmF",
    "expiry":"2019-06-25T06:00:00Z"
}
]]></artwork>
        </section>
      </section>
      <section anchor="listresponse-schema-extension">
        <name>ListResponse Schema Extension</name>
        <t>This document adds the following single-valued attribute to the "urn:ietf:params:scim:api:messages:2.0:ListResponse" schema defined in <xref section="3.4.2" sectionFormat="of" target="RFC7644"/>.</t>
        <dl>
          <dt>nextDeltaToken</dt>
          <dd>
            <t>A complex type representing the next delta token issued by the service provider. The sub-attributes of nextDeltaToken are "value" and "expiry" and carry the same descriptions and requirements as the matching attributes defined in the urn:ietf:params:scim:api:messages:2.0:delta:token schema in the Delta Tokens section of this document.</t>
          </dd>
        </dl>
        <t>The nextDeltaToken attribute is included in the response to a query made with another delta token. The value of a delta token returned in this attribute <bcp14>MUST</bcp14> reference the point at which the final page of changed resources was returned by the service provider. This attribute <bcp14>MUST NOT</bcp14> be returned prior to the final page of changed resources and <bcp14>MUST</bcp14> be returned on the final page.</t>
      </section>
      <section anchor="serviceproviderconfig">
        <name>ServiceProviderConfig</name>
        <t>This document adds the following complex attribute to the ServiceProviderConfig resource defined in <xref section="4" sectionFormat="of" target="RFC7644"/>.</t>
        <dl>
          <dt>DeltaQuery</dt>
          <dd>
            <t>A complex attribute that indicates advertised delta query configuration options.  <bcp14>REQUIRED</bcp14>.
</t>
            <dl>
              <dt>supported</dt>
              <dd>
                <t>A Boolean type indicating if the service provider supports delta query.  <bcp14>REQUIRED</bcp14>.</t>
              </dd>
              <dt>deltaTokenExpiry</dt>
              <dd>
                <t>A positive integer specifying the maximum number of seconds that a delta token is anticipated to be accepted by the service provider after being issued. Service providers that do not provide values for the "expiry" delta token attribute <bcp14>MUST</bcp14> advertise an estimated delta token lifetime in this attribute. Service providers that do not have a globally consistent lifetime for issued delta tokens <bcp14>SHOULD</bcp14> use the "expiry" value on each delta token instead.  <bcp14>OPTIONAL</bcp14>.</t>
              </dd>
              <dt>supportedResources</dt>
              <dd>
                <t>A multi-valued string type indicating what resources on the service provider support returning changes via delta query. Values <bcp14>MUST</bcp14> be either 'ServerRoot' or names of resource types that exist on the service provider, e.g., 'User' or 'Group'.  <bcp14>OPTIONAL</bcp14>.</t>
              </dd>
            </dl>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="delta-query-protocol">
      <name>Delta Query Protocol</name>
      <section anchor="delta-query-requests">
        <name>Delta Query Requests</name>
        <t>A client can use a previously obtained delta token to request information about changes that have occurred to the service provider's identity data since the delta token was issued. Clients attempting to make a delta query request <bcp14>MUST</bcp14> use the HTTP POST verb combined with the "/.delta" path extension. service providers <bcp14>MAY</bcp14> implement support for delta query requests against only certain resource types. Service providers <bcp14>MUST</bcp14> allow delta query requests to be made against resource endpoints (e.g.: /Users) that support delta query, and <bcp14>MAY</bcp14> allow requests to be made against the root of the server. The "/.delta" path extension <bcp14>MAY</bcp14> be appended to the end of a valid SCIM resource URL or the SCIM server root. For example:</t>
        <t>/Users/.delta</t>
        <t>&lt;baseUrl&gt;/.delta</t>
        <t>POST requests to /.delta <bcp14>MUST</bcp14> be identified using the URI "urn:ietf:params:scim:api:messages:2.0:delta:request". The schema of this query format includes the attributes defined in <xref section="3.4.3" sectionFormat="of" target="RFC7644"/> for the urn:ietf:params:scim:api:messages:2.0:SearchRequest schema, any additional attributes added to the SearchRequest schema by other future SCIM 2.0 specifications, and the following additional single-valued attribute:</t>
        <dl>
          <dt>deltaToken</dt>
          <dd>
            <t>The string value of a delta token previously issued by the service provider. The delta token value provided by the client <bcp14>MUST</bcp14> remain the same while paging through a response that extends across more than one page of results.  <bcp14>REQUIRED</bcp14>.</t>
          </dd>
        </dl>
        <t>Service providers responding to a delta query request <bcp14>MUST</bcp14> return all resources that meet the following criteria:</t>
        <ul spacing="normal">
          <li>
            <t>Changed since the provided delta token was issued</t>
          </li>
          <li>
            <t>Match all applied query filters</t>
          </li>
          <li>
            <t>The client is authorized to read the resource</t>
          </li>
        </ul>
        <t>Services providers <bcp14>SHALL</bcp14> evaluate all query parameters specified in a delta query request against the attribute values of the underlying SCIM resource and not the attributes or values of any delta query API message schemas.</t>
      </section>
      <section anchor="delta-query-responses">
        <name>Delta Query Responses</name>
        <t>This document defines a new "delta query response" SCIM message format that is returned by the service provider in the "Resources" collection in a ListResponse message. The delta query response message schema is a wrapper that contains full or partial representations of changed SCIM resources. Delta query responses consist of information about the change as well as a representation of the changed resource in either of two formats. The "operations" attribute contains one or more complex objects that represent changes to specific attributes on the resource, whereas the "data" attribute can be used to provide a traditional SCIM representation of the changed resource without specifying what attributes have changed. Delta query responses <bcp14>MUST</bcp14> be identified using the following URI: "urn:ietf:params:scim:api:messages:2.0:delta:response".</t>
        <t>The following single-valued attributes are defined in this schema:</t>
        <dl>
          <dt>resourceType</dt>
          <dd>
            <t>The resource type of the changed resource represented by the delta.  <bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt>changeType</dt>
          <dd>
            <t>A string representing what type of change has occurred.  Allowed values are "create", "update", and "delete".  <bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt>changedResourceId</dt>
          <dd>
            <t>A string representing the 'id' value of the changed resource.  <bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt>data</dt>
          <dd>
            <t>A complex object containing the changed resource.  <bcp14>REQUIRED</bcp14> if "operations" is null. <bcp14>MUST NOT</bcp14> be returned if "operations" is not null.</t>
          </dd>
        </dl>
        <t>The following multi-valued attribute is defined in this schema:</t>
        <dl>
          <dt>operations</dt>
          <dd>
            <t>A complex object representing the attribute-level changes that have occurred on the changed resource. <bcp14>REQUIRED</bcp14> if "data" is null". <bcp14>MUST NOT</bcp14> be returned if "data" is not null. This attribute has the following sub-attributes:
</t>
            <dl>
              <dt>op</dt>
              <dd>
                <t>A string that states what type of update has occurred. The possible values are aligned to the SCIM PATCH semantics defined in <xref section="3.5.2" sectionFormat="of" target="RFC7644"/>. Allowed values are "add", "replace", and "remove".  <bcp14>REQUIRED</bcp14>.</t>
              </dd>
              <dt>path</dt>
              <dd>
                <t>A string following the SCIM attribute notation and attribute path rules, representing the attribute that was updated. Supports attribute path filters as defined in <xref section="3.5.2" sectionFormat="of" target="RFC7644"/>.  <bcp14>OPTIONAL</bcp14>.</t>
              </dd>
              <dt>value</dt>
              <dd>
                <t>The new value(s) that the attribute or attribute value(s) specified in the path sub-attribute have been updated to contain.  <bcp14>REQUIRED</bcp14> when the value of "op" is "add" or "replace". <bcp14>MUST NOT</bcp14> be returned if the value of "op" is "remove".</t>
              </dd>
            </dl>
          </dd>
        </dl>
        <t>Service providers <bcp14>SHOULD NOT</bcp14> return multiple delta query responses for the same changed resource in the same page of results. When returning attribute changes via the "operations" attribute, service providers <bcp14>MAY</bcp14> distribute attribute changes for a single changed resource between multiple delta query responses across multiple pages. Splitting attribute changes across multiple pages allows for resources with multi-valued attributes such as the group resource's "members" attribute to return all changes while maintaining smaller and more consistent page sizes.</t>
        <section anchor="change-types">
          <name>Change Types</name>
          <t>Delta query responses are categorized into one of three change types.</t>
          <section anchor="create">
            <name>Create</name>
            <t>Newly created resources <bcp14>MUST</bcp14> be represented by a delta query response with a "changeType" of "Create". Delta query responses of type "Create" <bcp14>MUST</bcp14> return either the the full current state of the resource or the state of the resource at the time of creation in the "data" attribute.</t>
            <t>Newly created resources that were created with or updated after creation to have a large amount of data <bcp14>MAY</bcp14> return a "Create" operation followed by one or more "Update" operations to provide an accurate representation of the current state of the resource split across multiple delta query response messages.</t>
          </section>
          <section anchor="update">
            <name>Update</name>
            <t>Updated resources <bcp14>MUST</bcp14> be represented by a delta query response with a "changeType" of "Update". Service providers <bcp14>MAY</bcp14> return either the full current state of the updated resource via the "data" attribute, or only the changed attributes via the "operations" attribute. Service providers <bcp14>SHOULD</bcp14> return only changed attributes when possible.</t>
          </section>
          <section anchor="delete">
            <name>Delete</name>
            <t>Deleted resources <bcp14>MUST</bcp14> be represented by a delta query response with a "changeType" of "Delete". Deleted resources <bcp14>SHALL NOT</bcp14> have a value in either "data" or "operations".</t>
          </section>
        </section>
        <section anchor="operations">
          <name>Operations</name>
          <t>The structure of the "operations" attribute in the delta query response message is based on the SCIM PATCH semantics defined in <xref section="3.5.2" sectionFormat="of" target="RFC7644"/>. The rules defined in this section and its subsections apply to the "operations" attribute's "op", "path", and "value" sub-attributes.</t>
          <section anchor="add">
            <name>Add</name>
            <t>Using the "add" op can represent new values being added to any attribute, and values being either added or replaced on single-valued attributes. Examples include:</t>
            <section anchor="adding-or-replacing-a-value-to-a-single-valued-attribute">
              <name>Adding or replacing a value to a single-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U49z",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"add",
            "path":"urn:ietf:params:scim:schemas:extension:enterprise\
:2.0:User:employeeNumber",
            "value": "123456"
        }
    ]
}
]]></artwork>
            </section>
            <section anchor="adding-or-replacing-multiple-attribute-values">
              <name>Adding or replacing multiple attribute values</name>
              <artwork><![CDATA[
{
    "op":"add",
    "value": {
        "displayName": "John Doe",
        "active": true,
        "urn:ietf:params:scim:schemas:extension:enterprise\
:2.0:User:employeeNumber": "12345"
    }
}
]]></artwork>
            </section>
            <section anchor="adding-a-value-to-a-multi-valued-attribute">
              <name>Adding a value to a multi-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U49z",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"add",
            "path":"phoneNumbers",
            "value":[
                {
                    "value":"555-555-5555",
                    "type":"work"
                }
            ]

        }
    ]
}
]]></artwork>
            </section>
            <section anchor="adding-members-being-added-to-a-group">
              <name>Adding members being added to a group</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"G88",
    "resourceType":"Group",
    "changeType":"Update",
    "operations":[
        {
            "op":"add",
            "path":"members",
            "value":[
                {
                    "value":"memberId7"
                },
                {
                    "value":"memberId8"
                },
                {
                    "value":"memberId9"
                }
            ]
        }
    ]
}
]]></artwork>
            </section>
          </section>
          <section anchor="remove">
            <name>Remove</name>
            <t>The "remove" op is used when one or more values of an attribute have been removed. Examples include:</t>
            <section anchor="removing-a-single-valued-attribute">
              <name>Removing a single-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U40iA1Q9",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"remove",
            "path":"manager"
        }
    ]
}
]]></artwork>
            </section>
            <section anchor="removing-a-value-from-a-typed-multi-valued-attribute">
              <name>Removing a value from a typed multi-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U40iA1Q9",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"remove",
            "path":"emails[type eq \"work\" and \
value eq \"user5@example.com\"]"
        }
    ]
}
]]></artwork>
              <t>##### Removing members from a group</t>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"G88",
    "resourceType":"Group",
    "changeType":"Update",
    "operations":[
        {
            "op":"remove",
            "path":"members[value eq \"member1\"]",
        },
        {
            "op":"remove",
            "path":"members[value eq \"member2\"]",
        }
    ]
}
]]></artwork>
            </section>
          </section>
          <section anchor="replace">
            <name>Replace</name>
            <t>The "replace" op can be used when some or all of the values of an attribute have been replaced. When responding with operations about multi-valued attributes, service providers <bcp14>SHOULD</bcp14> provide unambiguous valuePath filters when possible, and <bcp14>SHALL</bcp14> provide all current values of the attribute when constructing an unambiguous valuePath filter is not possible. Examples include:</t>
            <section anchor="replacing-a-single-valued-attribute">
              <name>Replacing a single-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U40iA1Q9",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"replace",
            "path":"userName",
            "value":"jensenb@example.com"
        }
    ]
}
]]></artwork>
            </section>
            <section anchor="replacing-values-in-a-typed-multi-valued-attribute">
              <name>Replacing values in a typed multi-valued attribute</name>
              <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:response"],
    "changedResourceId":"U40iA1Q9",
    "resourceType":"User",
    "changeType":"Update",
    "operations":[
        {
            "op":"replace",
            "path":"phoneNumbers[type eq \"work\" \
and primary eq true].value",
            "value":"555-555-5556"
        }
    ]
}
]]></artwork>
            </section>
          </section>
        </section>
      </section>
      <section anchor="request-and-response-examples">
        <name>Request and Response Examples</name>
        <section anchor="requesting-changed-resources">
          <name>Requesting changed resources</name>
          <t>The following example shows a client using a previously obtained delta token to make a delta query request for all changes for the User resource type.</t>
          <artwork><![CDATA[
POST /Users/.delta
Host: example.com
Accept: application/scim+json
Authorization: Bearer foo

{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:request"],
    "deltaToken":"dGVzdC1kZWx0YVRva2Vu"
}
]]></artwork>
          <t>The service provider response would then contain any User resources that had changed since the delta token "dGVzdC1kZWx0YVRva2Vu" was issued. The following example shows a response with a newly created user, a user with attribute updates, and a deleted user.</t>
          <artwork><![CDATA[
HTTP/1.1 200/OK
Content-Type: application/scim+json

{
    "totalResults": 3,
    "itemsPerPage": 3,
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "Resources": [
        {
            "schemas":"urn:ietf:scim:api:messages:2.0:delta:response",
            "changedResourceId": "123",
            "resourceType": "User",
            "changeType": "Create",
            "data": {
                "userName": "bjensen",
                "name": {
                    "formatted": "Ms. Barbara J Jensen III",
                    "familyName": "Jensen",
                    "givenName": "Barbara"
                },
                "id": "123",
                "active": true,
                "phoneNumbers": [
                    {
                        "value": "555-555-5555",
                        "type": "work"
                    }
                ]
            }
        },
        {
            "schemas":"urn:ietf:scim:api:messages:2.0:delta:response",
            "changedResourceId": "456",
            "resourceType": "User",
            "changeType": "Update",
            "operations": [
                {
                    "op": "replace",
                    "path": "name.givenName",
                    "value": "Jim"
                },
                {
                    "op": "add",
                    "path": "phoneNumbers",
                    "value": [
                        {
                            "value": "555-555-4567",
                            "type": "mobile"
                        }
                    ]
                }
            ]

        },
        {
            "schemas":"urn:ietf:scim:api:messages:2.0:delta:response",
            "changedResourceId": "789",
            "resourceType": "User",
            "changeType": "Delete"
        }
    ]
}
]]></artwork>
        </section>
        <section anchor="updates-from-service-providers-that-do-not-support-attribute-level-change-tracking">
          <name>Updates from service providers that do not support attribute-level change tracking</name>
          <t>Service providers that do not support attribute-level change tracking <bcp14>MAY</bcp14> return the full current state of changed resources in the "data" attribute. The following example shows a delta query response by a service provider that only returns the full current state of changed resources. Clients <bcp14>SHALL</bcp14> be responsible for determining what attribute values have changed when the service provider has returned updated resource information using the "data" attribute.</t>
          <artwork><![CDATA[
POST /Users/.delta
Host: example.com
Accept: application/scim+json
Authorization: Bearer foo

{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:request"],
    "deltaToken":"3894e6d5-8e9e-4b5c-9b3b-6e8e7d4a4e9d",
    "filter":"title eq \"Tour Guide\" and \
addresses.country eq \"France\""
}
]]></artwork>
          <t>The service provider's response (some results omitted for brevity) is:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults":30,
    "itemsPerPage":10,
    "Resources":[
        {
            "schemas":["urn:ietf:params:scim:api:messages:\
2.0:delta:response"],
            "changedResourceId":"qwerty",
            "resourceType":"User",
            "changeType":"Update",
            "data":{
                "userName":"bjensen",
                "name":{
                    "formatted":"Ms. Barbara J Jensen III",
                    "familyName":"Jensen",
                    "givenName":"Barbara"
                },
                "title":"Tour Guide",
                "id":"qwerty",
                "active":true,
                "emails":[
                    {
                        "value":"bjensen@example.com",
                        "type":"work",
                        "primary":true
                    }
                ],
                "addresses":[
                    {
                        "type":"work",
                        "country":"France",
                        "locality":"Paris",
                        "primary":true
                    }
                ]

            }
        },
        {...},
        {...}
    ]
}

]]></artwork>
        </section>
        <section anchor="creation-of-a-large-resource-across-multiple-pages">
          <name>Creation of a large resource across multiple pages</name>
          <t>As described in (Ref to DQ Response - Create), large resources such as groups with many members may be returned across multiple pages. The following example shows a service provider's delta query responses for a group broken into multiple delta query response messages.</t>
          <artwork><![CDATA[
POST /Groups/.delta
Host: example.com
Accept: application/scim+json
Authorization: Bearer foo

{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:delta:request"],
    "deltaToken":"3894e6d5-8e9e-4b5c-9b3b-6e8e7d4a4e9d",
}
]]></artwork>
          <t>The service provider's response may contain delta query responses pertaining to other resources. For the newly created example group with an "id" value of "G123", the following delta query responses are returned:</t>
          <t>Some "members" values are omitted in the below examples for brevity.</t>
          <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults":405,
    "itemsPerPage":1,
    "nextCursor":"foo",
    "Resources":[
        {
            "schemas":["urn:ietf:params:scim:api:messages:\
    2.0:delta:response"],
            "changedResourceId":"G123",
            "resourceType":"Group",
            "changeType":"Create",
            "data":{
                "id":"G1",
                "displayName":"All Users",
                "members":[
                    {
                        "value":"member1"
                    },
                        ...
                    {
                        "value":"member99"
                    }
                ]

            }
        }
    ]
}
]]></artwork>
          <t>Following the "Create" delta query response, the service provider on a later page of results returns:</t>
          <artwork><![CDATA[
{
    "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults":456,
    "itemsPerPage":1,
    "nextCursor":"bar",
    "Resources":[
        {
            "schemas":["urn:ietf:params:scim:api:messages:\
    2.0:delta:response"],
            "changedResourceId":"G123",
            "resourceType":"Group",
            "changeType":"Update",
            "operations":[
                {
                    "op":"add",
                    "path":"members",
                    "value":[
                        {
                            "value":"member100"
                        },
                        {
                            "value":"..."
                        },
                        {
                            "value":"member199"
                        }
                    ]
                }
            ]
        }
    ]
},
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>To-do</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>To-do</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>To-do</t>
    </section>
    <section anchor="other">
      <name>Other</name>
      <t>To-do</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="RFC8792">
        <front>
          <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
          <author fullname="K. Watsen" initials="K." surname="Watsen"/>
          <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
          <author fullname="A. Farrel" initials="A." surname="Farrel"/>
          <author fullname="Q. Wu" initials="Q." surname="Wu"/>
          <date month="June" year="2020"/>
          <abstract>
            <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8792"/>
        <seriesInfo name="DOI" value="10.17487/RFC8792"/>
      </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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
jV6l2U0iowl/CdC7eYQgwl75X87suYOYawAA

-->

</rfc>
