<?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-group-members-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="SCIM Group Member Resource">SCIM Group Member Resource Type Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-zollner-scim-group-members-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>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 30?>

<t>This document extends the System for Cross-domain Identity Management (SCIM) 2.0 standard by defining a new "GroupMember" top-level resource. Under the existing model defined in <xref target="RFC7643"/>, group memberships are represented as values in a multi-valued attribute within a Group resource. This architecture lacks native support for server-side pagination, filtering, or sorting of individual members. In deployments managing large-scale groups (e.g., 100,000 to 1,000,000 members or more), retrieving a Group resource results in massive HTTP response payloads that can exceed 100MB in size. This can lead to service timeouts, memory exhaustion, and network instability, and has led to many major SCIM implementations choosing to not support returning the value of the "members" attribute for Group resources. This extension introduces a flattened resource model that enables group memberships to benefit from pagination and other SCIM protocol features, ensuring interoperability and performance at scale.</t>
    </abstract>
  </front>
  <middle>
    <?line 34?>

<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-group-membership.</t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The System for Cross-domain Identity Management (SCIM) 2.0 protocol <xref target="RFC7644">RFC7643</xref> is widely used for automating the provisioning of identities across disparate systems. While SCIM excels at managing individual User and Group resources, its design for representing relationships, specifically group memberships, encounters significant performance bottlenecks in large-scale enterprise environments.</t>
      <t>Currently, the "members" attribute of a Group resource is a multi-valued attribute. Because SCIM only supports paginating resources, a client requesting a Group resource must receive the entire list of group members in a single HTTP response. For a group with one million members, an HTTP response can reach approximately 200MB in size. These large payloads create several critical failure points including memory pressure and network timeouts.</t>
      <t>This document proposes the "GroupMember" resource type. By treating a membership as a first-class, top-level resource, Service Providers can leverage existing SCIM query parameters including filter, count, and multiple pagination methods, allowing them to implement a scaleable and reliable interface for managing groups of any size.</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="the-groupmember-resource">
      <name>The GroupMember Resource</name>
      <t>This section defines the <tt>GroupMember</tt> resource, which represents a single membership relationship between a SCIM Group and a member. By representing each membership as a distinct, top-level resource, Service Providers can manage group memberships individually, allowing for pagination, filtering, and other operations at scale.</t>
      <t>A <tt>GroupMember</tt> resource represents a direct membership only. Indirect memberships, as defined in <xref target="RFC7643"/> Section 4.1.2, <bcp14>MUST NOT</bcp14> be represented as <tt>GroupMember</tt> resources.</t>
      <section anchor="resource-properties">
        <name>Resource Properties</name>
        <t>The <tt>GroupMember</tt> resource is defined by the following properties:</t>
        <dl newline="true">
          <dt>schemas</dt>
          <dd>
            <t>A multi-valued attribute that contains the SCIM schema URNs for this resource. The URN for the GroupMember resource's core schema is <tt>urn:ietf:params:scim:schemas:core:2.0:GroupMember</tt>. This is a <strong><bcp14>REQUIRED</bcp14></strong> attribute. This attribute is a common attribute inherited from <xref target="RFC7643"/>.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>id</dt>
          <dd>
            <t>A unique identifier for the <tt>GroupMember</tt> resource, generated by the Service Provider. This is a <strong><bcp14>REQUIRED</bcp14></strong>, read-only attribute. Clients <bcp14>MUST</bcp14> treat this value as opaque. The <tt>id</tt> serves as the stable identifier for a membership link — it uniquely identifies the relationship between a specific group and a specific member, and is the value used to address the resource at the <tt>/GroupMembers/{id}</tt> URI. This attribute is a common attribute inherited from <xref target="RFC7643"/>.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>group</dt>
          <dd>
            <t>A complex attribute that provides a reference to the parent Group resource. This attribute contains the following sub-attributes:
</t>
            <dl newline="true">
              <dt>value</dt>
              <dd>
                <t>The <tt>id</tt> of the referenced Group resource. <strong><bcp14>REQUIRED</bcp14></strong>.</t>
              </dd>
              <dt>$ref</dt>
              <dd>
                <t>The URI of the referenced Group resource. Read-only.</t>
              </dd>
              <dt>display</dt>
              <dd>
                <t>A human-readable name for the referenced Group resource, generally corresponding to the Group's <tt>displayName</tt> attribute. Read-only.</t>
              </dd>
            </dl>
          </dd>
        </dl>
        <dl newline="true">
          <dt>member</dt>
          <dd>
            <t>A complex attribute that provides a reference to the member resource, which can be a User, another Group, or any other resource type that can be a member of a group. This attribute contains the following sub-attributes:
</t>
            <dl newline="true">
              <dt>value</dt>
              <dd>
                <t>The <tt>id</tt> of the referenced member resource. <strong><bcp14>REQUIRED</bcp14></strong>.</t>
              </dd>
              <dt>$ref</dt>
              <dd>
                <t>The URI of the referenced member resource. Read-only.</t>
              </dd>
              <dt>type</dt>
              <dd>
                <t>A string that specifies the resource type of the member, e.g., "User" or "Group". Read-only.</t>
              </dd>
              <dt>display</dt>
              <dd>
                <t>A human-readable name for the referenced member resource, generally corresponding to the member's <tt>displayName</tt> attribute. Read-only.</t>
              </dd>
            </dl>
          </dd>
        </dl>
        <dl newline="true">
          <dt>meta</dt>
          <dd>
            <t>A complex attribute containing metadata about the resource. This includes the <tt>resourceType</tt> (which <bcp14>MUST</bcp14> be "GroupMember"), <tt>created</tt>, <tt>lastModified</tt>, and <tt>location</tt> attributes. This is a <bcp14>REQUIRED</bcp14>, read-only attribute. This attribute is a common attribute inherited from <xref target="RFC7643"/>.</t>
          </dd>
        </dl>
        <t>If a Service Provider's implementation does not support creating or deleting <tt>GroupMember</tt> resources, all attributes in the schema definition returned from <tt>/Schemas</tt> <bcp14>MUST</bcp14> have their <tt>mutability</tt> property set to <tt>readOnly</tt>.</t>
      </section>
      <section anchor="json-representation">
        <name>JSON Representation</name>
        <t>The following is an example of a <tt>GroupMember</tt> resource in JSON format. This example represents the membership of a User in a Group. ($ref values truncated for formatting purposes):</t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMember"],
  "id": "gm12345",
  "group": {
    "value": "e9e30dba-f08f-4139-944c-2e6949b80b05",
    "$ref": "https://example.com/scim/v2/Groups/e9e3xxx"
  },
  "member": {
    "value": "2819c223-7f76-453a-919d-413861904646",
    "$ref": "https://example.com/scim/v2/Users/2819xxx",
    "type": "User"
  },
  "meta": {
    "resourceType": "GroupMember",
    "created": "2026-02-24T20:26:44Z",
    "lastModified": "2026-02-24T20:26:44Z",
    "location": "https://example.com/scim/v2/GroupMembers/gm12345"
  }
}
]]></artwork>
      </section>
      <section anchor="resource-type-representation">
        <name>Resource Type Representation</name>
        <t>The Service Provider's <tt>ResourceType</tt> schema, available at the <tt>/ResourceTypes</tt> endpoint, <bcp14>MUST</bcp14> include an entry for "GroupMember".</t>
        <t><strong>Example ResourceType entry:</strong></t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],
  "id": "GroupMember",
  "name": "GroupMember",
  "endpoint": "/GroupMembers",
  "description": "Resource representing a single group membership.",
  "schema": "urn:ietf:params:scim:schemas:core:2.0:GroupMember",
  "meta": {
    "resourceType": "ResourceType",
    "location": "https://example.com/scim/v2/ResourceTypes/GroupMember"
  }
}
]]></artwork>
      </section>
    </section>
    <section anchor="membersmetadata-group-schema-extension">
      <name>membersMetadata Group Schema Extension</name>
      <t>To prevent ambiguity and provide a clear path for clients, this specification also defines an extension schema for the <tt>Group</tt> resource. This extension introduces a new complex attribute, <tt>membersMetadata</tt>, which signals how group memberships are managed and provides metadata about those memberships.</t>
      <t>When a Service Provider supports the <tt>/GroupMembers</tt> endpoint, it <bcp14>SHOULD</bcp14> include the <tt>membersMetadata</tt> attribute on <tt>Group</tt> resources to declare its membership management policy for that group. The schema URN for the membersMetadata schema extension is <tt>urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</tt></t>
      <section anchor="the-membersmetadata-attribute">
        <name>The <tt>membersMetadata</tt> Attribute</name>
        <t>The <tt>membersMetadata</tt> attribute is a complex attribute with the following sub-attributes:</t>
        <dl newline="true">
          <dt>policy</dt>
          <dd>
            <t>A <bcp14>REQUIRED</bcp14> string that specifies how membership for this group is represented. It <bcp14>MUST</bcp14> have one of the following values:
</t>
            <dl newline="true">
              <dt>inline</dt>
              <dd>
                <t>Indicates that this group's members are fully represented in the <tt>members</tt> attribute. Clients <bcp14>SHOULD NOT</bcp14> use the <tt>/GroupMembers</tt> endpoint for this group.</t>
              </dd>
              <dt>external</dt>
              <dd>
                <t>Indicates that this group's members are managed exclusively via the <tt>/GroupMembers</tt> endpoint. The <tt>members</tt> attribute <bcp14>MUST</bcp14> be omitted from this <tt>Group</tt> resource representation.</t>
              </dd>
              <dt>hybrid</dt>
              <dd>
                <t>Indicates that the Service Provider <bcp14>MAY</bcp14> return members in the <tt>members</tt> attribute, but the canonical method for managing memberships is via <tt>/GroupMembers</tt>. Clients <bcp14>SHOULD</bcp14> prefer using the <tt>/GroupMembers</tt> endpoint for reliability and scale.</t>
              </dd>
            </dl>
          </dd>
        </dl>
        <dl newline="true">
          <dt>ref</dt>
          <dd>
            <t>A <bcp14>REQUIRED</bcp14> URI that a client can use to query for the group's members. It <bcp14>MUST</bcp14> be the URI of the <tt>/GroupMembers</tt> endpoint with a pre-populated filter for the current group's ID. Its format is <tt>[GroupMembers_Endpoint]?filter=group.value eq "[Group_ID]"</tt>.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>memberCount</dt>
          <dd>
            <t>An <bcp14>OPTIONAL</bcp14> non-negative integer indicating the total number of members in the group.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>allowedMemberTypes</dt>
          <dd>
            <t>An <bcp14>OPTIONAL</bcp14> multi-valued attribute containing a list of strings that specify the resource types (<tt>resourceType</tt>) of members allowed in this group.</t>
          </dd>
        </dl>
      </section>
      <section anchor="example-group-resources">
        <name>Example Group Resources</name>
        <section anchor="example-of-an-external-policy">
          <name>Example of an "External" Policy</name>
          <t>The following is a <tt>Group</tt> with a large number of members. The <tt>policy</tt> is <tt>"external"</tt>, the <tt>members</tt> attribute is absent, and the client is directed to use the <tt>ref</tt> URI.</t>
          <artwork><![CDATA[
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group",
    "urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group"
  ],
  "id": "e9e30dba-f08f-4139-944c-2e6949b80b05",
  "displayName": "All Employees",
  "urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group": {
    "membersMetadata": {
      "policy": "external",
      "ref": "https://example.com/scim/v2/GroupMembers?filter= \
        group.value%20eq%20%22e9e30dba-f08f-4139-944c-2e6949b80b05%22",
      "memberCount": 150321
    }
  },
  "meta": {
    "resourceType": "Group",
    "location": "https://example.com/scim/v2/Groups/ \
      e9e30dba-f08f-4139-944c-2e6949b80b05"
  }
}
]]></artwork>
        </section>
        <section anchor="example-of-a-hybrid-policy">
          <name>Example of a "Hybrid" Policy</name>
          <t>The following is a <tt>Group</tt> with a small number of members. The <tt>policy</tt> is <tt>"hybrid"</tt>, indicating that while the members are included inline for convenience, clients should still prefer using the <tt>/GroupMembers</tt> endpoint for management operations.</t>
          <artwork><![CDATA[
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group",
    "urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group"
  ],
  "id": "a0b1c2d3-f08f-4139-944c-2e6949b80b05",
  "displayName": "Sales Team",
  "members": [
    {
      "value": "2819c223-7f76-453a-919d-413861904646",
      "display": "Babs Jensen"
    }
  ],
  "urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group": {
    "membersMetadata": {
      "policy": "hybrid",
      "ref": "https://example.com/scim/v2/GroupMembers?filter= \
        group.value%20eq%20%22a0b1c2d3-f08f-4139-944c-2e6949b80b05%22",
      "memberCount": 1,
      "allowedMemberTypes": ["User", "Group"]
    }
  },
  "meta": {
    "resourceType": "Group",
    "location": "https://example.com/scim/v2/Groups/ \
      a0b1c2d3-f08f-4139-944c-2e6949b80b05"
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="managing-groupmember-resources">
      <name>Managing GroupMember Resources</name>
      <t>This section describes how <tt>GroupMember</tt> resources are managed using the SCIM protocol. A <tt>GroupMember</tt> is a simple resource that represents a linkage between a group and a member. As such, a membership can only be created, retrieved, or deleted. Updating a membership serves little practical value, as changing the group or the member would fundamentally represent a new membership, not a modification of the existing one. Therefore, a Service Provider that supports this specification <bcp14>MUST</bcp14> only support the <tt>POST</tt>, <tt>GET</tt>, and <tt>DELETE</tt> methods for this resource type.</t>
      <t>Service Providers <bcp14>MAY</bcp14> also support management of group members through the existing <tt>members</tt> attribute of the <tt>Group</tt> resource as defined in <xref target="RFC7643"/> for the purpose of backwards compatibility with existing clients. However, when adding or removing members from a group that also has <tt>GroupMember</tt> resources, Service Providers <bcp14>MUST</bcp14> ensure that the state remains consistent across both representations. For example, deleting a <tt>GroupMember</tt> resource <bcp14>MUST</bcp14> result in the corresponding member being removed from the <tt>members</tt> array on the <tt>Group</tt> resource, if that attribute is supported by the Service Provider.</t>
      <section anchor="creating-groupmember-resources-post">
        <name>Creating GroupMember Resources (POST)</name>
        <t>To add a new member to a group, the client sends a <tt>POST</tt> request to the <tt>GroupMembers</tt> endpoint. The request body <bcp14>MUST</bcp14> contain a <tt>GroupMember</tt> resource, specifying the <tt>group.value</tt> and <tt>member.value</tt>.</t>
        <ul spacing="normal">
          <li>
            <t>Request: POST /scim/v2/GroupMembers</t>
          </li>
          <li>
            <t>Response: 201 Created with the full <tt>GroupMember</tt> resource in the body, including its newly generated <tt>id</tt> and <tt>meta</tt> attributes.</t>
          </li>
        </ul>
        <t>A Service Provider <bcp14>MUST</bcp14> ensure that both the group and the member referenced by their <tt>id</tt>s exist before creating the <tt>GroupMember</tt> resource. If either the group or the member does not exist, the Service Provider <bcp14>SHOULD</bcp14> return a <tt>400 Bad Request</tt> error with a <tt>scimType</tt> of <tt>invalidValue</tt>.</t>
        <t>If the membership already exists, the Service Provider <bcp14>MUST</bcp14> return a <tt>409 Conflict</tt> error.</t>
        <t>Example Request Body:</t>
        <t>POST /GroupMembers</t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMember"],
  "group": {
    "value": "e9e30dba-f08f-4139-944c-2e6949b80b05"
  },
  "member": {
    "value": "2819c223-7f76-453a-919d-413861904646"
  }
}
]]></artwork>
      </section>
      <section anchor="retrieving-groupmember-resources-get">
        <name>Retrieving GroupMember Resources (GET)</name>
        <t><tt>GroupMember</tt> resources can be retrieved by sending a <tt>GET</tt> request to the <tt>GroupMembers</tt> endpoint. Clients can retrieve an individual resource by its <tt>id</tt> or a list of resources.</t>
        <ul spacing="normal">
          <li>
            <t>To get a specific membership: <tt>GET /scim/v2/GroupMembers/{id}</tt></t>
          </li>
          <li>
            <t>To get all memberships: <tt>GET /scim/v2/GroupMembers</tt></t>
          </li>
        </ul>
        <section anchor="pagination">
          <name>Pagination</name>
          <t>Service Providers <bcp14>MUST</bcp14> support pagination of <tt>GroupMember</tt> resources to allow clients to retrieve large sets of memberships in manageable chunks.</t>
          <t>Index-based Pagination: The <tt>startIndex</tt> and <tt>count</tt> query parameters are the primary method for pagination, as defined in <xref target="RFC7644"/>.</t>
          <ul spacing="normal">
            <li>
              <t>Example: <tt>GET /scim/v2/GroupMembers?startIndex=1&amp;count=1000</tt></t>
            </li>
          </ul>
          <t>Cursor as defined in <xref target="RFC9865"/> for improved performance with very large data sets.</t>
          <ul spacing="normal">
            <li>
              <t>Example: <tt>GET /scim/v2/GroupMembers?count=1000&amp;cursor=aW5kZXg9MTAx</tt></t>
            </li>
          </ul>
          <t>The response for a paginated request is a <tt>ListResponse</tt> containing the <tt>GroupMember</tt> resources for the current page.</t>
        </section>
        <section anchor="filtering">
          <name>Filtering</name>
          <t>Service Providers <bcp14>MUST</bcp14> support filtering on the <tt>group.value</tt> and <tt>member.value</tt> attributes. This enables clients to perform critical queries, such as "find all members of a specific group" or "find all groups a specific user is a member of."</t>
          <dl newline="true">
            <dt>To find all members of a group:</dt>
            <dd>
              <t>GET /scim/v2/GroupMembers?filter=group.value eq e9e30dba-f08f-4139-944c-2e6949b80b05"</t>
            </dd>
          </dl>
          <dl newline="true">
            <dt>To find all groups for a member:</dt>
            <dd>
              <t>GET /scim/v2/GroupMembers?filter=member.value eq "2819c223-7f76-453a-919d-413861904646"</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="deleting-groupmember-resources-delete">
        <name>Deleting GroupMember Resources (DELETE)</name>
        <t>To remove a member from a group, the client sends a <tt>DELETE</tt> request to the URI of the specific <tt>GroupMember</tt> resource.</t>
        <ul spacing="normal">
          <li>
            <t>Request: <tt>DELETE /scim/v2/GroupMembers/{id}</tt></t>
          </li>
          <li>
            <t>Response: <tt>204 No Content</tt> on successful deletion.</t>
          </li>
        </ul>
      </section>
      <section anchor="bulk-operations">
        <name>Bulk Operations</name>
        <t>Clients can create and delete multiple <tt>GroupMember</tt> resources in a single request using the <tt>/Bulk</tt> endpoint as defined in <xref target="RFC7644"/>. This is highly efficient for synchronizing memberships for a group with many changes.</t>
        <t>The following is an example of a <tt>Bulk</tt> request that adds two new members and removes one existing member from a group.</t>
        <t>Example Bulk Request:</t>
        <artwork><![CDATA[
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
"failOnErrors": 1,
"Operations": [
{
  "method": "POST",
  "path": "/GroupMembers",
  "bulkId": "add-user-1",
  "data": {
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMember"],
    "group": { "value": "e9e30dba-f08f-4139-944c-2e6949b80b05" },
    "member": { "value": "aed9876f-e83c-4359-99a3-37e082236081" }
  }
},
{
  "method": "POST",
  "path": "/GroupMembers",
  "bulkId": "add-user-2",
  "data": {
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMember"],
    "group": { "value": "e9e30dba-f08f-4139-944c-2e6949b80b05" },
    "member": { "value": "bce5231a-6d36-4b89-a249-1b913e16338b" }
  }
},
{
  "method": "DELETE",
  "path": "/GroupMembers/gm12345",
  "bulkId": "delete-user-3"
}
]
}
]]></artwork>
      </section>
    </section>
    <section anchor="service-provider-considerations">
      <name>Service Provider Considerations</name>
      <t>This section describes the requirements for Service Providers that implement the <tt>GroupMember</tt> resource.</t>
      <section anchor="discovering-support-for-the-groupmember-resource">
        <name>Discovering Support for the GroupMember Resource</name>
        <t>Service Providers that support the <tt>GroupMember</tt> resource <bcp14>MUST</bcp14> declare this support in their <tt>ResourceType</tt> and <tt>Schema</tt> metadata.</t>
        <section anchor="schema-endpoint">
          <name>Schema Endpoint</name>
          <t>The Service Provider's <tt>Schema</tt> definition, available at the <tt>/Schemas</tt> endpoint, <bcp14>MUST</bcp14> include the full schema definitions for <tt>urn:ietf:params:scim:schemas:core:2.0:GroupMember</tt> as defined in Section 2.3 of this document.</t>
        </section>
        <section anchor="impact-on-the-group-resource">
          <name>Impact on the Group Resource</name>
          <t>As noted in Section 6, a Service Provider <bcp14>MAY</bcp14> continue to support the <tt>members</tt> attribute on the <tt>Group</tt> resource for backwards compatibility. When doing so, the Service Provider <bcp14>MUST</bcp14> maintain transactional integrity and consistency between the state of the <tt>members</tt> attribute and the state of the corresponding <tt>GroupMember</tt> resources.</t>
          <t>For example, if a <tt>DELETE</tt> request to a <tt>/GroupMembers/{id}</tt> URI is successful, the corresponding member <bcp14>MUST</bcp14> also be removed from the <tt>members</tt> array of the parent <tt>Group</tt> resource. Conversely, if a member is removed from a <tt>Group</tt> via a <tt>PATCH</tt> request to the <tt>/Groups/{id}</tt> URI, the corresponding <tt>GroupMember</tt> resource <bcp14>MUST</bcp14> be deleted.</t>
        </section>
      </section>
    </section>
    <section anchor="schema-representation">
      <name>Schema Representation</name>
      <section anchor="groupmember-core-schema">
        <name>GroupMember Core Schema</name>
        <t>The following is the formal SCIM schema definition for the <tt>GroupMember</tt>
resource. The <tt>schemas</tt> and <tt>meta</tt> attributes are common attributes
inherited from <xref target="RFC7643"/> and are included here for completeness.</t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
  "id": "urn:ietf:params:scim:schemas:core:2.0:GroupMember",
  "name": "Group Member",
  "description": "SCIM resource representing a single group membership.",
  "attributes": [
    {
      "name": "group",
      "type": "complex",
      "multiValued": false,
      "mutability": "immutable",
      "returned": "default",
      "required": true,
      "description": "The group of which the member is a member.",
      "subAttributes": [
        {
          "name": "value",
          "type": "string",
          "multiValued": false,
          "mutability": "immutable",
          "returned": "default",
          "required": true,
          "caseExact": true,
          "uniqueness": "none",
          "description": "The id of the group."
        },
        {
          "name": "$ref",
          "type": "reference",
          "referenceTypes": ["Group"],
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "uniqueness": "none",
          "description": "The URI of the group."
        },
        {
          "name": "display",
          "type": "string",
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "caseExact": false,
          "uniqueness": "none",
          "description": "The displayName of the group."
        }
      ]
    },
    {
      "name": "member",
      "type": "complex",
      "multiValued": false,
      "mutability": "immutable",
      "returned": "default",
      "required": true,
      "description": "The member of the group.",
      "subAttributes": [
        {
          "name": "value",
          "type": "string",
          "multiValued": false,
          "mutability": "immutable",
          "returned": "default",
          "required": true,
          "caseExact": true,
          "uniqueness": "none",
          "description": "The id of the member."
        },
        {
          "name": "$ref",
          "type": "reference",
          "referenceTypes": ["User", "Group"],
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "uniqueness": "none",
          "description": "The URI of the member."
        },
        {
          "name": "type",
          "type": "string",
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "caseExact": false,
          "uniqueness": "none",
          "description": "The resource type of the member."
        },
        {
          "name": "display",
          "type": "string",
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "caseExact": false,
          "uniqueness": "none",
          "description": "The displayName of the member."
        }
      ]
    }
  ],
  "meta": {
    "resourceType": "Schema",
    "location": "https://example.com/scim/v2/Schemas/ \
      urn:ietf:params:scim:schemas:core:2.0:GroupMember"
  }
}
]]></artwork>
      </section>
      <section anchor="membersmetadata-schema-extension">
        <name>membersMetadata Schema Extension</name>
        <t>This specification defines a schema extension for the SCIM <tt>Group</tt> resource to support the discoverability of membership management policies.</t>
        <t><strong>Schema URN:</strong> <tt>urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</tt></t>
        <section anchor="the-membersmetadata-attribute-definition">
          <name>The <tt>membersMetadata</tt> Attribute Definition</name>
          <t>The extension introduces a single complex attribute to the <tt>Group</tt>
resource: <tt>membersMetadata</tt>. This attribute is defined as follows. The
<tt>schemas</tt> and <tt>meta</tt> attributes are common attributes inherited from
<xref target="RFC7643"/> and are included here for completeness.</t>
          <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
  "id": \
    "urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group",
  "name": "GroupMembersMetadata",
  "description": "A schema extension for Group resources to \
    provide metadata about how members are managed.",
  "attributes": [
    {
      "name": "membersMetadata",
      "type": "complex",
      "multiValued": false,
      "mutability": "readOnly",
      "returned": "default",
      "required": false,
      "description": "Provides metadata about the management \
        of this group's members.",
      "subAttributes": [
        {
          "name": "policy",
          "type": "string",
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": true,
          "canonicalValues": [
            "inline",
            "external",
            "hybrid"
          ],
          "description": "Specifies the policy for how \
            membership of this group is represented."
        },
        {
          "name": "ref",
          "type": "reference",
          "referenceTypes": ["uri"],
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": true,
          "description": "A URI that a client can use to \
            query for the group's members."
        },
        {
          "name": "memberCount",
          "type": "integer",
          "multiValued": false,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "uniqueness": "none",
          "description": "An integer indicating the total \
            number of members in the group."
        },
        {
          "name": "allowedMemberTypes",
          "type": "string",
          "multiValued": true,
          "mutability": "readOnly",
          "returned": "default",
          "required": false,
          "caseExact": true,
          "uniqueness": "none",
          "description": "A list of strings specifying the \
            resource types of members allowed in this group."
        }
      ]
    }
  ],
  "meta": {
    "resourceType": "Schema",
    "location": "https://example.com/scim/v2/Schemas/ \
      urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group"
  }
}
]]></artwork>
        </section>
        <section anchor="usage">
          <name>Usage</name>
          <t>When a Service Provider uses this extension, it <bcp14>MUST</bcp14> add the schema URN
<tt>urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</tt> to the
<tt>schemas</tt> attribute of the <tt>Group</tt> resource. The <tt>membersMetadata</tt>
attribute and its sub-attributes are read-only, as they are metadata
reported by the Service Provider to the client.</t>
        </section>
      </section>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <t>The security considerations for the <tt>GroupMember</tt> resource are substantially the same as those for the <tt>User</tt> and <tt>Group</tt> resources defined in Section 8 of the SCIM Protocol document <xref target="RFC7644"/>. All requests <bcp14>MUST</bcp14> be made over a secure channel such as Transport Layer Security (TLS).</t>
        <t>Authentication and authorization for managing <tt>GroupMember</tt> resources are the responsibility of the Service Provider. Implementers should consider the following:</t>
        <ul spacing="normal">
          <li>
            <t>A client with permission to read a <tt>Group</tt> resource's <tt>members</tt> attribute <bcp14>MUST</bcp14> be granted permission to <tt>GET</tt> the corresponding <tt>GroupMember</tt> resources for that group. Access to a <tt>Group</tt> resource alone does not imply access to its member list — a Service Provider <bcp14>MAY</bcp14> expose group metadata broadly while restricting membership details to privileged clients.</t>
          </li>
          <li>
            <t>A client authorized to add or remove members from a <tt>Group</tt> via a <tt>PATCH</tt> to the <tt>Group</tt> resource <bcp14>MUST</bcp14> have equivalent <tt>POST</tt> and <tt>DELETE</tt> permissions on <tt>GroupMember</tt> resources for that same group.</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-considerations">
        <name>IANA Considerations</name>
        <t>This document requests that IANA register the following URNs in the "SCIM Schemas" registry.</t>
        <t><strong>URI:</strong> <tt>urn:ietf:params:scim:schemas:core:2.0:GroupMember</tt>
          <strong>Specification:</strong> This document
<strong>Description:</strong> Defines the schema for a resource representing a single group membership.</t>
        <t><strong>URI:</strong> <tt>urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</tt>
          <strong>Specification:</strong> This document
<strong>Description:</strong> Defines a schema extension for the Group resource that provides metadata about how group memberships are managed.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="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="RFC9865">
        <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="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>
