<?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.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sehgal-scim-delta-query-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="SCIM Delta Query">SCIM Delta Query</title>
    <seriesInfo name="Internet-Draft" value="draft-sehgal-scim-delta-query-01"/>
    <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="2024" month="July" day="08"/>
    <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>
  </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.</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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

-->

</rfc>
