<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zollner-scim-interop-profile-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="SCIM Interop Profile">SCIM 2.0 Interoperability Profile</title>
    <seriesInfo name="Internet-Draft" value="draft-zollner-scim-interop-profile-01"/>
    <author initials="D." surname="Zollner" fullname="Danny Zollner">
      <organization>Okta</organization>
      <address>
        <email>danny.zollner@okta.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="15"/>
    <area>Applications and Real-Time</area>
    <workgroup>SCIM</workgroup>
    <keyword>scim</keyword>
    <keyword>provisioning</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 32?>

<t>This document defines an implementation profile for the System for Cross-domain Identity Management (SCIM) 2.0. In the typical deployment model, an identity provider acting as a SCIM Client provisions and manages identities at multiple downstream service providers, while each service provider (commonly a multi-tenant application serving many customers) accepts provisioning connections from multiple different identity providers. This many-to-many integration model compounds the interoperability challenges arising from the wide range of optional features and implementation variations permitted by the base specification. This profile addresses those challenges by restricting the optional features and protocol variations permitted under the base specification and by establishing normative requirements for a common implementation baseline.</t>
    </abstract>
  </front>
  <middle>
    <?line 36?>

<section anchor="discussion-venues">
      <name>Discussion Venues</name>
      <t>This note is to be removed before publishing as an RFC.</t>
      <t>Source for this draft and an issue tracker can be found at https://github.com/Zollnerd/scim-interop-profile.</t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The SCIM 2.0 standard <xref target="RFC7644">RFC7643</xref> provides a framework for automating identity provisioning across organizational boundaries. While the base specification's flexibility enables broad applicability, it also permits a wide range of implementation choices — in areas such as <tt>PATCH</tt> syntax, pagination, filtering, case sensitivity, and error handling — that have proven to be common sources of interoperability failure in practice. Where implementations diverge on these points, the result is integrations that require bespoke configuration and maintenance for each pairing.</t>
      <t>This document specifies a profile for SCIM 2.0 that addresses these challenges by establishing required capabilities and restricting protocol variations that have proven problematic. Implementations conforming to this profile can be expected to interoperate without integration-specific customization.</t>
    </section>
    <section anchor="notational-conventions">
      <name>Notational Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="scope-and-conformance">
      <name>Scope and Conformance</name>
      <t>This profile applies to SCIM 2.0 Service Providers and Clients.</t>
      <t>Requirements in this document, expressed using the normative terms "<bcp14>MUST</bcp14>", "<bcp14>SHALL</bcp14>", and "<bcp14>REQUIRED</bcp14>" as defined in the Notational Conventions section above, are addressed to Service Providers, Clients, or both. A Service Provider is conformant with this profile if it satisfies all such requirements addressed to Service Providers and all such requirements addressed to both roles. A Client is conformant with this profile if it satisfies all such requirements addressed to Clients and all such requirements addressed to both roles.</t>
      <t>Service Providers claiming conformance with this profile <bcp14>MUST</bcp14> include an <tt>interopProfileConformant</tt> attribute with a value of <tt>true</tt> in their <tt>ServiceProviderConfig</tt> response. This attribute is defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Name: <tt>interopProfileConformant</tt></t>
        </li>
        <li>
          <t>Type: Boolean</t>
        </li>
        <li>
          <t>Multi-Valued: false</t>
        </li>
        <li>
          <t>Required: false</t>
        </li>
        <li>
          <t>Mutability: readOnly</t>
        </li>
        <li>
          <t>Returned: default</t>
        </li>
      </ul>
      <t>A Service Provider that does not conform to this profile <bcp14>MUST</bcp14> either omit this attribute or set its value to <tt>false</tt>.</t>
    </section>
    <section anchor="data-model-requirements">
      <name>Data Model Requirements</name>
      <section anchor="discovery-endpoints">
        <name>Discovery Endpoints</name>
        <t>Service Providers <bcp14>MUST</bcp14> implement the following configuration discovery endpoints:</t>
        <ul spacing="normal">
          <li>
            <t><tt>ServiceProviderConfig</tt> (<xref target="RFC7643"/>, Section 4)</t>
          </li>
          <li>
            <t><tt>Schema</tt> (<xref target="RFC7643"/>, Section 7)</t>
          </li>
          <li>
            <t><tt>ResourceType</tt> (<xref target="RFC7643"/>, Section 6)</t>
          </li>
        </ul>
        <t>Service Providers <bcp14>MUST</bcp14> publish an accurate list of schemas and attributes via the <tt>/Schemas</tt> endpoint, matching exactly what is implemented and supported by the service. All schemas referenced in resource type definitions returned by the <tt>/ResourceTypes</tt> endpoint <bcp14>MUST</bcp14> be available at the <tt>/Schemas</tt> endpoint.</t>
        <t>The schema and resource type definitions for <tt>ServiceProviderConfig</tt>, <tt>Schema</tt>, and <tt>ResourceType</tt> <bcp14>MAY</bcp14> be omitted from the <tt>/Schemas</tt> and <tt>/ResourceTypes</tt> endpoints respectively, as these are configuration resources rather than provisioning targets.</t>
        <t>For every <tt>ResourceType</tt> resource returned by the <tt>/ResourceTypes</tt> endpoint, Service Providers <bcp14>MUST</bcp14> populate the <tt>id</tt> attribute and its value <bcp14>MUST</bcp14> equal the value of the <tt>name</tt> attribute.</t>
      </section>
      <section anchor="case-sensitivity">
        <name>Case Sensitivity</name>
        <t>To ensure predictable and interoperable behavior, Service Providers <strong><bcp14>MUST</bcp14></strong> implement case sensitivity consistently across both filtering operations and uniqueness constraint enforcement. For any given attribute, the case sensitivity rules applied during a filter query (e.g., <tt>userName eq "User.A"</tt>) <strong><bcp14>MUST</bcp14></strong> be identical to the rules used to detect a uniqueness conflict during a <tt>POST</tt> or <tt>PATCH</tt> operation.</t>
        <t>This profile requires adherence to the case sensitivity definitions specified in <xref target="RFC7643"/> for the following attributes:</t>
        <t>Common Attributes (<xref target="RFC7643"/>, Section 3.1):
*   <tt>id</tt>: <tt>caseExact</tt> is <tt>true</tt>. Service Providers <strong><bcp14>MUST</bcp14></strong> treat <tt>abc-123</tt> and <tt>ABC-123</tt> as distinct values.
*   <tt>externalId</tt> (optional): <tt>caseExact</tt> is <tt>true</tt>. Service Providers <strong><bcp14>MUST</bcp14></strong> treat <tt>ABC-123</tt> and <tt>abc-123</tt> as distinct values, if <tt>externalId</tt> is supported.</t>
        <t>User Schema Attributes (<xref target="RFC7643"/>, Section 4.1.1) -- applicable only if the User resource type is implemented:
*   <tt>userName</tt>: <tt>caseExact</tt> is <tt>false</tt>. Service Providers <strong><bcp14>MUST</bcp14></strong> treat <tt>JSmith</tt> and <tt>jsmith</tt> as equivalent.</t>
      </section>
      <section anchor="attribute-and-schema-handling">
        <name>Attribute and Schema Handling</name>
        <t>To ensure strict conformance and prevent unintended data loss or corruption, Service Providers <strong><bcp14>MUST</bcp14></strong> adhere to a strict handling model for attributes and schema extensions. When a SCIM request (e.g., <tt>POST</tt>, <tt>PATCH</tt>) contains attributes or schema URIs that are not defined in the Service Provider's <tt>ResourceType</tt> or <tt>Schema</tt> definitions, the request <strong><bcp14>MUST</bcp14></strong> be rejected.</t>
        <t>The Service Provider <strong><bcp14>MUST</bcp14></strong> return an HTTP <tt>400 Bad Request</tt> with a <tt>scimType</tt> error of <tt>invalidSyntax</tt> for such requests.</t>
      </section>
      <section anchor="canonical-values-for-typed-attributes">
        <name>Canonical Values for Typed Attributes</name>
        <t>For multi-valued complex attributes that include a <tt>type</tt> sub-attribute (e.g., <tt>emails</tt>, <tt>phoneNumbers</tt>, <tt>ims</tt>, <tt>addresses</tt>), Service Providers <bcp14>MUST</bcp14> declare the acceptable <tt>type</tt> values for each such attribute in that attribute's <tt>canonicalValues</tt> property, as returned by <tt>/Schemas</tt>. Clients <bcp14>MUST</bcp14> only use <tt>type</tt> values listed in the <tt>canonicalValues</tt> property for that attribute.</t>
      </section>
    </section>
    <section anchor="protocol-and-endpoint-requirements">
      <name>Protocol and Endpoint Requirements</name>
      <section anchor="endpoint-structure">
        <name>Endpoint Structure</name>
        <t>Service Providers <bcp14>MUST</bcp14> offer a unique endpoint for each implemented resource type (e.g., <tt>/Users</tt>, <tt>/Groups</tt>). Resources of different types <bcp14>MUST NOT</bcp14> share an endpoint. This requirement applies only to resource-type endpoints; the root endpoint (e.g., <tt>https://example.com/scim/v2/</tt>) is not subject to this requirement and <bcp14>MAY</bcp14> return resources of multiple types if querying at the root level is supported.</t>
        <t>Service Providers <bcp14>MUST</bcp14> use <tt>/{endpoint}/{id}</tt> as the canonical URI for addressing any resource and <bcp14>MUST NOT</bcp14> address resources via other attribute values in the URI path (e.g., <tt>/{userName}</tt>). Clients <bcp14>MUST</bcp14> use <tt>/{id}</tt> when retrieving a known resource, and <bcp14>MUST</bcp14> use the <tt>filter</tt> query parameter to locate a resource by any other attribute value.</t>
      </section>
      <section anchor="data-format-and-http-headers">
        <name>Data Format and HTTP Headers</name>
        <t>All data exchange <bcp14>MUST</bcp14> use the JSON format as defined in <xref target="RFC7643"/>. All requests and responses containing SCIM data <bcp14>MUST</bcp14> include a <tt>Content-Type</tt> header with the value <tt>application/scim+json</tt>, as defined in <xref target="RFC7644"/>, Section 8.1.</t>
        <t>To aid in troubleshooting and client identification, Clients <bcp14>MUST</bcp14> include a <tt>User-Agent</tt> header in all HTTP requests. The header's value should be meaningful, for example, identifying the name of the client software.</t>
      </section>
      <section anchor="filtering">
        <name>Filtering</name>
        <t>The <tt>filter</tt> query parameter <bcp14>MUST</bcp14> be supported. Service Providers <bcp14>MUST</bcp14> support the <tt>eq</tt> and <tt>and</tt> operators. To promote interoperability, Clients <bcp14>MUST NOT</bcp14> use operators other than <tt>eq</tt> and <tt>and</tt>.</t>
        <t>The use of filters in the URI for any HTTP method other than <tt>GET</tt> (e.g., <tt>PATCH /Users?filter=...</tt>) <strong><bcp14>MUST NOT</bcp14></strong> be used.</t>
        <t>When a filter expression is applied to a resource-type endpoint (e.g., <tt>/Users</tt>, <tt>/Groups</tt>) and references an attribute not defined in any of that resource type's schemas, Service Providers <bcp14>MUST</bcp14> return an HTTP 400 error with a <tt>scimType</tt> of <tt>invalidFilter</tt>, as defined in <xref target="RFC7644"/>, Section 3.12.</t>
      </section>
      <section anchor="pagination">
        <name>Pagination</name>
        <t>To ensure the reliable handling of large data sets, Service Providers <bcp14>MUST</bcp14> implement at least one of the following pagination methods for all list operations:</t>
        <ul spacing="normal">
          <li>
            <t>Index-based pagination as defined in <xref target="RFC7644"/>, Section 3.4.2.4.</t>
          </li>
          <li>
            <t>Cursor-based pagination, as defined in <xref target="RFC9865"/>.</t>
          </li>
        </ul>
        <t>If the <tt>count</tt> parameter is omitted from a request, Service Providers <bcp14>SHOULD</bcp14> return at least 100 results by default. Service Providers <bcp14>MUST</bcp14> support a client-requested <tt>count</tt> value of at least 100. Service Providers <bcp14>SHOULD</bcp14> enforce a server-specified maximum number of results per page and <bcp14>MUST</bcp14> return fewer results than requested when the client specifies a <tt>count</tt> value that exceeds that limit.</t>
      </section>
      <section anchor="updating-resources">
        <name>Updating Resources</name>
        <t>Service Providers <bcp14>MUST</bcp14> support the <tt>PATCH</tt> operation (<xref target="RFC7644"/>, Section 3.5.2) for resource updates. Clients <bcp14>MUST</bcp14> use the <tt>PATCH</tt> operation for updates and <bcp14>SHALL NOT</bcp14> use the <tt>PUT</tt> operation.</t>
        <t>This profile defines a restricted subset of the SCIM 2.0 <tt>PATCH</tt> method to ensure predictable behavior and high interoperability.</t>
        <section anchor="general-patch-constraints">
          <name>General PATCH Constraints</name>
          <section anchor="mandatory-use-of-the-path-attribute">
            <name>Mandatory Use of the 'path' Attribute</name>
            <t>Every operation object within the <tt>Operations</tt> array <strong><bcp14>MUST</bcp14></strong> contain a <tt>path</tt> attribute. Clients <strong><bcp14>MUST NOT</bcp14></strong> issue "path-less" PATCH operations where the target attribute is implied by the keys within the <tt>value</tt> object.</t>
            <t>Service Providers <strong><bcp14>MUST</bcp14></strong> reject PATCH requests containing operations that lack a <tt>path</tt> attribute with an HTTP <tt>400 Bad Request</tt> and a <tt>scimType</tt> error of <tt>invalidSyntax</tt>.</t>
          </section>
          <section anchor="multi-attribute-updates">
            <name>Multi-Attribute Updates</name>
            <t>When a Client needs to update multiple attributes in a single HTTP request, it <strong><bcp14>MUST</bcp14></strong> provide a separate operation entry within the <tt>Operations</tt> array for each unique attribute path.</t>
          </section>
        </section>
        <section anchor="attribute-specific-requirements">
          <name>Attribute-Specific Requirements</name>
          <section anchor="singular-attributes-simple-and-complex">
            <name>Singular Attributes (Simple and Complex)</name>
            <ol spacing="normal" type="1"><li>
                <t><strong>Simple Attribute Operation Equivalence:</strong> For singular simple attributes (e.g., <tt>userName</tt>, <tt>active</tt>), Service Providers <strong><bcp14>MUST</bcp14></strong> treat <tt>add</tt> and <tt>replace</tt> as functionally equivalent.</t>
              </li>
              <li>
                <t><strong>Complex Sub-attribute Targeting:</strong>  When only intending to modify the value of a specific sub-attribute of a complex attribute, Clients <strong><bcp14>SHOULD</bcp14></strong> target that sub-attribute using dot-notation (e.g., <tt>path: "name.givenName"</tt>).</t>
              </li>
              <li>
                <t><strong>Complex Attribute Operations:</strong>
                </t>
                <ul spacing="normal">
                  <li>
                    <t><strong>Replace:</strong> If a Client targets a singular complex attribute in its entirety (e.g., <tt>path: "name"</tt>) using the <tt>replace</tt> operation, the <tt>value</tt> <strong><bcp14>MUST</bcp14></strong> be a JSON object containing all sub-attributes the Client intends to persist. The Service Provider <strong><bcp14>MUST</bcp14></strong> replace the entire complex attribute with the provided object.</t>
                  </li>
                  <li>
                    <t><strong>Add:</strong> If a Client targets a singular complex attribute in its entirety using the <tt>add</tt> operation, the <tt>value</tt> <strong><bcp14>MUST</bcp14></strong> be a JSON object. The Service Provider <strong><bcp14>MUST</bcp14></strong> perform a partial merge, updating only the provided sub-attributes and preserving existing values for omitted sub-attributes.</t>
                  </li>
                </ul>
              </li>
            </ol>
          </section>
          <section anchor="multi-valued-attributes-simple-and-complex">
            <name>Multi-valued Attributes (Simple and Complex)</name>
            <t>This section applies to both multi-valued simple attributes (e.g., the <tt>schemas</tt> attribute) and multi-valued complex attributes (e.g., <tt>emails</tt>, <tt>addresses</tt>).</t>
            <ol spacing="normal" type="1"><li>
                <t><strong>Collection-Level Operations:</strong>
                </t>
                <ul spacing="normal">
                  <li>
                    <t><strong>Replace:</strong> If a Client targets a multi-valued attribute path without a filter (e.g., <tt>path: "emails"</tt> or <tt>path: "roles"</tt>) using the <tt>replace</tt> operation, the <tt>value</tt> <strong><bcp14>MUST</bcp14></strong> be an array of objects/values. The Service Provider <strong><bcp14>MUST</bcp14></strong> replace the entire collection with the provided array.</t>
                  </li>
                  <li>
                    <t><strong>Add:</strong> If a Client targets a multi-valued attribute path without a filter using the <tt>add</tt> operation, the <tt>value</tt> <strong><bcp14>MUST</bcp14></strong> be an array of objects/values. The Service Provider <strong><bcp14>MUST</bcp14></strong> append the provided values to the existing collection.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><strong>Filtering Constraints:</strong> When using a filter to target an element within a multi-valued complex attribute:
                </t>
                <ul spacing="normal">
                  <li>
                    <t><strong>Sub-attribute Requirement:</strong> The <tt>path</tt> <strong><bcp14>MUST</bcp14></strong> target a specific sub-attribute of the matched element (e.g., <tt>path: "emails[type eq \"work\"].value"</tt>). Targeting the element object itself (e.g., <tt>path: "emails[type eq \"work\"]"</tt>) is <strong>PROHIBITED</strong>.</t>
                  </li>
                </ul>
              </li>
            </ol>
          </section>
        </section>
        <section anchor="error-handling">
          <name>Error Handling</name>
          <t>Service Providers <strong><bcp14>MAY</bcp14></strong> return an HTTP <tt>400 Bad Request</tt> for any PATCH operation that violates these constraints. Specific <tt>scimType</tt> values should be used as follows:
* <tt>invalidSyntax</tt>: Missing <tt>path</tt> or use of prohibited operators.
* <tt>invalidFilter</tt>: Filter matches more than one element in a multi-valued attribute.
* <tt>invalidPath</tt>: Filter fails to target a specific sub-attribute.</t>
        </section>
      </section>
      <section anchor="resource-lifecycle">
        <name>Resource Lifecycle</name>
        <t>Service Providers <strong><bcp14>MUST NOT</bcp14></strong> treat a <tt>PATCH</tt> request as a deletion of the resource. A resource modified via <tt>PATCH</tt> <strong><bcp14>MUST</bcp14></strong> be retained by the Service Provider. Deletion of a resource can only be performed via an HTTP <tt>DELETE</tt> request.</t>
        <t>Service Providers <bcp14>MUST</bcp14> return <tt>404 Not Found</tt> in response to any operation targeting a deleted resource and <bcp14>MUST</bcp14> omit deleted resources from all query results.</t>
        <t>After a resource is successfully deleted, its unique identifiers (such as <tt>userName</tt>) <bcp14>MUST NOT</bcp14> be considered in uniqueness conflict calculations and <bcp14>MUST</bcp14> be available for reassignment to a new resource.</t>
        <t>Service Providers <bcp14>MUST NOT</bcp14> respond to an HTTP <tt>DELETE</tt> request by modifying resource attributes rather than deleting the resource (e.g., setting a User's <tt>active</tt> attribute to <tt>false</tt>). A successful <tt>DELETE</tt> request <bcp14>MUST</bcp14> result in the resource being deleted.</t>
      </section>
      <section anchor="concurrency-and-versioning">
        <name>Concurrency and Versioning</name>
        <t>Clients <strong><bcp14>MUST NOT</bcp14></strong> include HTTP headers related to conditional requests or entity tags (ETags), such as <tt>If-Match</tt>, <tt>If-None-Match</tt>, <tt>If-Modified-Since</tt>, or <tt>If-Unmodified-Since</tt>. Service Providers are not expected to support these headers and <strong><bcp14>MAY</bcp14></strong> ignore them or reject the request.</t>
      </section>
      <section anchor="bulk-operations">
        <name>Bulk Operations</name>
        <t>Support for the <tt>/Bulk</tt> endpoint (<xref target="RFC7644"/>, Section 3.7) is <bcp14>OPTIONAL</bcp14>.</t>
      </section>
      <section anchor="error-handling-1">
        <name>Error Handling</name>
        <section anchor="uniqueness-conflicts">
          <name>Uniqueness Conflicts</name>
          <t>When a <tt>POST</tt> or <tt>PATCH</tt> request attempts to create or modify a resource in a way that violates a uniqueness constraint (e.g., for attributes like <tt>userName</tt> or <tt>emails</tt>), the Service Provider <strong><bcp14>MUST</bcp14></strong> return an HTTP <tt>409 Conflict</tt> response. The response body <strong><bcp14>MUST</bcp14></strong> also include a SCIM error detail with the <tt>scimType</tt> set to <tt>uniqueness</tt>, as defined in <xref target="RFC7644"/>, Section 3.12.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>All communication between a Client and Service Provider <bcp14>MUST</bcp14> be secured using Transport Layer Security (TLS) <xref target="RFC8446"/>. Implementations <bcp14>MUST</bcp14> support TLS 1.3 and <bcp14>MAY</bcp14> support TLS 1.2.</t>
      </section>
      <section anchor="authentication">
        <name>Authentication</name>
        <t>The use of HTTP Basic Authentication over TLS is <bcp14>NOT RECOMMENDED</bcp14>.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Prior to being published as an RFC, this document requests that the IANA SCIM Server-Related Schema URIs registry entry for <tt>urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig</tt> be updated to include or reference the <tt>interopProfileConformant</tt> attribute defined in Section 4 of this document.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t><em>(TODO: Add acknowledgements)</em></t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC7644" target="https://www.rfc-editor.org/info/rfc7644" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7644.xml">
        <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="RFC7643" target="https://www.rfc-editor.org/info/rfc7643" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7643.xml">
        <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="RFC9865" target="https://www.rfc-editor.org/info/rfc9865" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9865.xml">
        <front>
          <title>Cursor-Based Pagination of System of Cross-domain Identity Management (SCIM) Resources</title>
          <author fullname="M. Peterson" initials="M." role="editor" surname="Peterson"/>
          <author fullname="D. Zollner" initials="D." surname="Zollner"/>
          <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
          <date month="October" year="2025"/>
          <abstract>
            <t>This document updates RFCs 7643 and 7644 by defining additional System for Cross-Domain Identity Management (SCIM) query parameters and result attributes to allow use of cursor-based pagination in SCIM service providers that are implemented with existing codebases, databases, or APIs where cursor-based pagination is already well established.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9865"/>
        <seriesInfo name="DOI" value="10.17487/RFC9865"/>
      </reference>
      <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <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:
H4sIAAAAAAAAA7Vb63IbR3b+jyq+Q4f7wyIDgCLFtWVksw5E0Ra3RJEhSKcc
r6rQmGkQYw5moOkZkliVqvIQeYA8Sx4lT5Jz68vgQsna5IctcC7d536+c05P
r9fb6dRZnZuBGp2cnauj/nN1VtSmKhem0pMsz+qluqzKaZabnY6eTCpzL4/K
Y+FutqgGqq4aWx89f/7986OdTqJrc1tWy4GydQqvV0YP1HCxyDO4k5WFVbpI
1ZXRee86m8MSD2V1d1uVzYL32OncmSVcSwc7HaV6yibZnH8tqvI+s7BEVtzy
lSw1BXCy3OnsdBbZQP1al0lX2bKqKzO18Gs5xx/v8X5aJoWeA89ppad1729l
nhem6uHyvYzZ6i2Yrd7zQ3xDN/WsrJgM/J9SvMBrXRRL9e+8AN8oq1tdZH8j
Bgfq4q7WfN3MdZbDlvhGX7b8lxJu95NyjnsUZTWHt+4NbXP148l33x4fR79f
uN/fv/z2j+73y+Pjbwf4dg9VKT+Unti60kmNf1/PMquA42YOAlKpmWaFQcGr
bL7IDV4kUpUwrKZlpeqZUaOlrc2c/jypSmt7aQkcFOpMBK3OdaFvaQH1DLW1
h9bTB7ug1+vlArScw4aLvFzSU/MyNXmXtnZrkB5TUykgFlSpNFDG5nWSZ/iO
VzTbypz2tG6BDDmBhZu8zoAZYPOhAM6NnitrqvssMX4HMIGHGfJndDJbu6ue
gRLmZZEvYX9arlebQgMBOpgrvwVUAhVLlYChl3NYeA+IT8yiti2rVElZFCZh
M59W5TyiMptOTYXcrcnB9hXpC3fo1WWPdkKTvK2YBJIhrD1flE2RWhJ1tuqw
yUznuSlQULoCgoAaogAffoBtVKXhpiqnqlzgqqCmqdF1UxmW8opl3MMi4q+w
yTyra5OqyZKWm2hrlF2YJJuKlIQDZ046TWFZa5DUEp6NaIMl4FZdZax7XG4z
PbAWeHOZb6YE5GCqLcTQ67APbKMneWZnuJF3NNj+Q5NVxKolS9eK7WBVBLhy
Do7Tdx42z9IUg95O5w/qdWbBGFDv6mdTNMZ6tyvKGtQDrJdqgrvNy3sUnYGt
wPYaT5EmhwR3pvVHZVMlzhHReTFKESfoOtY24F3g3XfAdQJXJvhog3drNavr
hR0cHNxm9ayZYGQ5kOCUHmwKb33mAGJ5VaYNWSsTb0I+ANEVqa5S9avEoffu
1/F7Z7jottMKQiJGcJZkA96hSbFtK3f+oROMKq1wCXqfICegZQOe8G/kr5sV
+w3oKzePmVg8+OokR5OqSp06n+V7XZWB8HJbiskgqW0nWNF1MishNFj1P//x
n+BaCrOWVbaBqAH/ji+H1ydvxpBO4PHHrlro26yg97oKBArCBd66oBck2BQW
YtQ9EYHqM1UFkpnBzxwlgBvUM9SavudQZAoxFbFCS5ZgichVJ59COgEPQRIX
GOuBZhSZwUsthsCAwNYr5JVCM1C2KGE5iIgoW3AyCExopVGcsUyY+AdQZBfl
HZJVTLPbpgq+hSmBIqUYLEXXhc5QDP319CM6JHuJE443Nto2jhlmLWa0fFko
TEHiC5ZMJkEjDi2bAsia5OEfsCG02QSy2IoIkXMIGxSnSnZLR7/4oHkE3jAe
wf2grBojLkS+po7F23O2LFlE7F+88V1ZO3c4KYt7dB4gwfklQCKFmMiq3fOb
0fVul/9V7y7o99Xpv96cXZ2+xt+jN8O3b/2PjjwxenNx8/Z1+BXePLk4Pz99
95pfhquqdamzez78ZZcteffi8vrs4t3w7S7aX93SMTiMWDGJYVEZlIq2HQgT
SZVN4A9459XJ5X//1+Gx+vjxHyCYHB0efv/pk/zx8vC7Y/jjYWYK3o3yMv8J
BrHsgH8bXZFz5jlqPqvBwbvon3YGEEChF/Q7nf1fUTLvB+pPk2RxePxnuYAM
ty46mbUukszWr6y9zELccGnDNl6aresrkm7TO/yl9beTe3TxTz9gZlK9w5c/
/LnDFjRKwPhIdCdst+if3ht9asYwaSg7ef8bCTC6dICEVyEwZsk+r+Kcuar8
LroB+S7kZeuyeki4YA/zyHCdgZJJectFPTJOTXkDs8UlIMImHIkm4MFdsjwX
O8gP17jpOla6kHgg2dSzvhquPYbBMHGCq8mB2y6fTTGpWCDJcjADM6QM0QIU
T5PCCf3zLyKRqipzzIhDB4v/HwgUwXwFWYRZ1thLcp3NBQg7E9xAKTlkViR5
k6LFqrHETikrvf3WY8A3ENAnjYRUyCD3Om8og4+h7DRjMZasUmMhx1FzQnlr
jDlhAXZjBKOGBbNgcRqRYJ6XD5bqqn31jiq97XThM9fLBTzzqgR56AIvnFMN
8TMSmA4gV+fW4GVxnvjSeVNLSh8AfTq9gGDHjwIALvBRoEzDckjNBlulPJaW
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
AA==

-->

</rfc>
