<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC7644 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7644.xml">
<!ENTITY RFC7643 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7643.xml">
<!ENTITY RFC9865 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9865.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>


<rfc ipr="trust200902" docName="draft-zollner-scim-group-members-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SCIM Group Members">SCIM 2.0 Group Member Resource</title>

    <author initials="D." surname="Zollner" fullname="Danny Zollner">
      <organization>Okta</organization>
      <address>
        <email>danny.zollner@okta.com</email>
      </address>
    </author>

    <date year="2026" month="March" day="02"/>

    <area>Applications and Real-Time</area>
    <workgroup>SCIM</workgroup>
    <keyword>scim</keyword> <keyword>provisioning</keyword> <keyword>identity</keyword>

    <abstract>


<?line 31?>

<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"></xref>, 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 35?>

<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 <spanx style="verb">GroupMember</spanx> 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>

<section anchor="resource-properties"><name>Resource Properties</name>

<t>The <spanx style="verb">GroupMember</spanx> 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 <spanx style="verb">urn:ietf:params:scim:schemas:core:2.0:GroupMember</spanx>. This is a <strong><bcp14>REQUIRED</bcp14></strong> attribute.</t>
  </dd>
</dl>

<dl newline="true">
  <dt>id</dt>
  <dd>
    <t>A unique identifier for the <spanx style="verb">GroupMember</spanx> 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.</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 <spanx style="verb">id</spanx> 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>
    </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 <spanx style="verb">id</spanx> 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>
    </dl>
  </dd>
</dl>

<dl newline="true">
  <dt>meta</dt>
  <dd>
    <t>A complex attribute containing metadata about the resource. This includes the <spanx style="verb">resourceType</spanx> (which <bcp14>MUST</bcp14> be "GroupMember"), <spanx style="verb">created</spanx>, <spanx style="verb">lastModified</spanx>, and <spanx style="verb">location</spanx> attributes. This is a <bcp14>REQUIRED</bcp14>, read-only attribute.</t>
  </dd>
</dl>

</section>
<section anchor="json-representation"><name>JSON Representation</name>

<t>The following is an example of a <spanx style="verb">GroupMember</spanx> resource in JSON format. This example represents the membership of a User in a Group. ($ref values truncated for formatting purposes):</t>

<figure><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></figure>

</section>
<section anchor="resource-type-representation"><name>Resource Type Representation</name>

<t>The Service Provider's <spanx style="verb">ResourceType</spanx> schema, available at the <spanx style="verb">/ResourceTypes</spanx> endpoint, <bcp14>MUST</bcp14> include an entry for "GroupMember".</t>

<t><strong>Example ResourceType entry:</strong></t>

<figure><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"
}
]]></artwork></figure>

</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 <spanx style="verb">Group</spanx> resource. This extension introduces a new complex attribute, <spanx style="verb">membersMetadata</spanx>, which signals how group memberships are managed and provides metadata about those memberships.</t>

<t>When a Service Provider supports the <spanx style="verb">/GroupMembers</spanx> endpoint, it <bcp14>SHOULD</bcp14> include the <spanx style="verb">membersMetadata</spanx> attribute on <spanx style="verb">Group</spanx> resources to declare its membership management policy for that group. The schema URN for the membersMetadata schema extension is <spanx style="verb">urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</spanx></t>

<section anchor="the-membersmetadata-attribute"><name>The <spanx style="verb">membersMetadata</spanx> Attribute</name>

<t>The <spanx style="verb">membersMetadata</spanx> 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 <spanx style="verb">members</spanx> attribute. Clients <bcp14>SHOULD NOT</bcp14> use the <spanx style="verb">/GroupMembers</spanx> endpoint for this group.</t>
      </dd>
      <dt>external</dt>
      <dd>
        <t>Indicates that this group's members are managed exclusively via the <spanx style="verb">/GroupMembers</spanx> endpoint. The <spanx style="verb">members</spanx> attribute <bcp14>MUST</bcp14> be omitted from this <spanx style="verb">Group</spanx> resource representation.</t>
      </dd>
      <dt>hybrid</dt>
      <dd>
        <t>Indicates that the Service Provider <bcp14>MAY</bcp14> return members in the <spanx style="verb">members</spanx> attribute, but the canonical method for managing memberships is via <spanx style="verb">/GroupMembers</spanx>. Clients <bcp14>SHOULD</bcp14> prefer using the <spanx style="verb">/GroupMembers</spanx> 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 <spanx style="verb">/GroupMembers</spanx> endpoint with a pre-populated filter for the current group's ID. Its format is <spanx style="verb">[GroupMembers_Endpoint]?filter=group.value eq "[Group_ID]"</spanx>.</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 (<spanx style="verb">resourceType</spanx>) 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 <spanx style="verb">Group</spanx> with a large number of members. The <spanx style="verb">policy</spanx> is <spanx style="verb">"external"</spanx>, the <spanx style="verb">members</spanx> attribute is absent, and the client is directed to use the <spanx style="verb">ref</spanx> URI.</t>

<figure><artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core: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></figure>

</section>
<section anchor="example-of-a-hybrid-policy"><name>Example of a "Hybrid" Policy</name>

<t>The following is a <spanx style="verb">Group</spanx> with a small number of members. The <spanx style="verb">policy</spanx> is <spanx style="verb">"hybrid"</spanx>, indicating that while the members are included inline for convenience, clients should still prefer using the <spanx style="verb">/GroupMembers</spanx> endpoint for management operations.</t>

<figure><artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core: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></figure>

</section>
</section>
</section>
<section anchor="managing-groupmember-resources"><name>Managing GroupMember Resources</name>

<t>This section describes how <spanx style="verb">GroupMember</spanx> resources are managed using the SCIM protocol. A <spanx style="verb">GroupMember</spanx> 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 <spanx style="verb">POST</spanx>, <spanx style="verb">GET</spanx>, and <spanx style="verb">DELETE</spanx> methods for this resource type.</t>

<t>Service Providers <bcp14>MAY</bcp14> also support management of group members through the existing <spanx style="verb">members</spanx> attribute of the <spanx style="verb">Group</spanx> resource as defined in <xref target="RFC7643"></xref> for the purpose of backwards compatibility with existing clients. However, when adding or removing members from a group that also has <spanx style="verb">GroupMember</spanx> resources, Service Providers <bcp14>MUST</bcp14> ensure that the state remains consistent across both representations. For example, deleting a <spanx style="verb">GroupMember</spanx> resource <bcp14>MUST</bcp14> result in the corresponding member being removed from the <spanx style="verb">members</spanx> array on the <spanx style="verb">Group</spanx> 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 <spanx style="verb">POST</spanx> request to the <spanx style="verb">GroupMembers</spanx> endpoint. The request body <bcp14>MUST</bcp14> contain a <spanx style="verb">GroupMember</spanx> resource, specifying the <spanx style="verb">group.value</spanx> and <spanx style="verb">member.value</spanx>.</t>

<t><list style="symbols">
  <t>Request: POST /scim/v2/GroupMembers</t>
  <t>Response: 201 Created with the full <spanx style="verb">GroupMember</spanx> resource in the body, including its newly generated <spanx style="verb">id</spanx> and <spanx style="verb">meta</spanx> attributes.</t>
</list></t>

<t>A Service Provider <bcp14>MUST</bcp14> ensure that both the group and the member referenced by their <spanx style="verb">id</spanx>s exist before creating the <spanx style="verb">GroupMember</spanx> resource. If either the group or the member does not exist, the Service Provider <bcp14>SHOULD</bcp14> return a <spanx style="verb">400 Bad Request</spanx> error with a <spanx style="verb">scimType</spanx> of <spanx style="verb">invalidValue</spanx>.</t>

<t>If the membership already exists, the Service Provider <bcp14>MUST</bcp14> return a <spanx style="verb">409 Conflict</spanx> error.</t>

<t>Example Request Body:</t>

<t>POST /GroupMembers</t>

<figure><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></figure>

</section>
<section anchor="retrieving-groupmember-resources-get"><name>Retrieving GroupMember Resources (GET)</name>

<t><spanx style="verb">GroupMember</spanx> resources can be retrieved by sending a <spanx style="verb">GET</spanx> request to the <spanx style="verb">GroupMembers</spanx> endpoint. Clients can retrieve an individual resource by its <spanx style="verb">id</spanx> or a list of resources.</t>

<t><list style="symbols">
  <t>To get a specific membership: <spanx style="verb">GET /scim/v2/GroupMembers/{id}</spanx></t>
  <t>To get all memberships: <spanx style="verb">GET /scim/v2/GroupMembers</spanx></t>
</list></t>

<section anchor="pagination"><name>Pagination</name>

<t>Service Providers <bcp14>MUST</bcp14> support pagination of <spanx style="verb">GroupMember</spanx> resources to allow clients to retrieve large sets of memberships in manageable chunks.</t>

<t>Index-based Pagination: The <spanx style="verb">startIndex</spanx> and <spanx style="verb">count</spanx> query parameters are the primary method for pagination, as defined in <xref target="RFC7644"></xref>.</t>

<t><list style="symbols">
  <t>Example: <spanx style="verb">GET /scim/v2/GroupMembers?startIndex=1&amp;count=1000</spanx></t>
</list></t>

<t>Cursor as defined in <xref target="RFC9865"></xref> for improved performance with very large data sets.</t>

<t><list style="symbols">
  <t>Example: <spanx style="verb">GET /scim/v2/GroupMembers?count=1000&amp;cursor=aW5kZXg9MTAx</spanx></t>
</list></t>

<t>The response for a paginated request is a <spanx style="verb">ListResponse</spanx> containing the <spanx style="verb">GroupMember</spanx> resources for the current page.</t>

</section>
<section anchor="filtering"><name>Filtering</name>

<t>Service Providers <bcp14>MUST</bcp14> support filtering on the <spanx style="verb">group.value</spanx> and <spanx style="verb">member.value</spanx> 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 <spanx style="verb">DELETE</spanx> request to the URI of the specific <spanx style="verb">GroupMember</spanx> resource.</t>

<t><list style="symbols">
  <t>Request: <spanx style="verb">DELETE /scim/v2/GroupMembers/{id}</spanx></t>
  <t>Response: <spanx style="verb">204 No Content</spanx> on successful deletion.</t>
</list></t>

</section>
<section anchor="bulk-operations"><name>Bulk Operations</name>

<t>Clients can create and delete multiple <spanx style="verb">GroupMember</spanx> resources in a single request using the <spanx style="verb">/Bulk</spanx> endpoint as defined in <xref target="RFC7644"></xref>. This is highly efficient for synchronizing memberships for a group with many changes.</t>

<t>The following is an example of a <spanx style="verb">Bulk</spanx> request that adds two new members and removes one existing member from a group.</t>

<t>Example Bulk Request:</t>

<figure><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></figure>

</section>
</section>
<section anchor="service-provider-considerations"><name>Service Provider Considerations</name>

<t>This section describes the requirements for Service Providers that implement the <spanx style="verb">GroupMember</spanx> resource.</t>

<section anchor="discovering-support-for-the-groupmember-resource"><name>Discovering Support for the GroupMember Resource</name>

<t>Service Providers that support the <spanx style="verb">GroupMember</spanx> resource <bcp14>MUST</bcp14> declare this support in their <spanx style="verb">ResourceType</spanx> and <spanx style="verb">Schema</spanx> metadata.</t>

<section anchor="schema-endpoint"><name>Schema Endpoint</name>

<t>The Service Provider's <spanx style="verb">Schema</spanx> definition, available at the <spanx style="verb">/Schemas</spanx> endpoint, <bcp14>MUST</bcp14> include the full schema definitions for <spanx style="verb">urn:ietf:params:scim:schemas:core:2.0:GroupMember</spanx> 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 3, a Service Provider <bcp14>MAY</bcp14> continue to support the <spanx style="verb">members</spanx> attribute on the <spanx style="verb">Group</spanx> resource for backwards compatibility. When doing so, the Service Provider <bcp14>MUST</bcp14> maintain transactional integrity and consistency between the state of the <spanx style="verb">members</spanx> attribute and the state of the corresponding <spanx style="verb">GroupMember</spanx> resources.</t>

<t>For example, if a <spanx style="verb">DELETE</spanx> request to a <spanx style="verb">/GroupMembers/{id}</spanx> URI is successful, the corresponding member <bcp14>MUST</bcp14> also be removed from the <spanx style="verb">members</spanx> array of the parent <spanx style="verb">Group</spanx> resource. Conversely, if a member is removed from a <spanx style="verb">Group</spanx> via a <spanx style="verb">PATCH</spanx> request to the <spanx style="verb">/Groups/{id}</spanx> URI, the corresponding <spanx style="verb">GroupMember</spanx> resource <bcp14>MUST</bcp14> be deleted.</t>

<t>Service Providers that support both mechanisms <bcp14>SHOULD</bcp14> clearly document their consistency model. It is <bcp14>RECOMMENDED</bcp14> that for groups with a very large number of members, Service Providers implement the <spanx style="verb">members</spanx> attribute as write-only by setting the 'returned' schema property to 'never'.</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 <spanx style="verb">GroupMember</spanx> resource.</t>

<figure><artwork><![CDATA[
{
  "id": "urn:ietf:params:scim:schemas:core:2.0:GroupMember",
  "name": "GroupMember",
  "description": "SCIM resource representing a single 
      group membership.",
  "attributes": [
    {
      "name": "group",
      "type": "complex",
      "mutability": "immutable",
      "required": true,
      "uniqueness": "none",
      "description": "The group in which the member is a member.",
      "subAttributes": [
        {
          "name": "value",
          "type": "string",
          "mutability": "immutable",
          "required": true,
          "uniqueness": "none",
          "description": "The id of the group."
        },
        {
          "name": "$ref",
          "type": "reference",
          "referenceTypes": ["Group"],
          "mutability": "readOnly",
          "required": false,
          "uniqueness": "none",
          "description": "The URI of the group."
        }
      ]
    },
    {
      "name": "member",
      "type": "complex",
      "mutability": "immutable",
      "required": true,
      "uniqueness": "none",
      "description": "The member of the group.",
      "subAttributes": [
        {
          "name": "value",
          "type": "string",
          "mutability": "immutable",
          "required": true,
          "uniqueness": "none",
          "description": "The id of the member."
        },
        {
          "name": "$ref",
          "type": "reference",
          "referenceTypes": ["User", "Group"],
          "mutability": "readOnly",
          "required": false,
          "uniqueness": "none",
          "description": "The URI of the member."
        },
        {
          "name": "type",
          "type": "string",
          "mutability": "readOnly",
          "required": false,
          "uniqueness": "none",
          "description": "The type of the member, 
            e.g., 'User' or 'Group'."
        }
      ]
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="membersmetadata-schema-extension"><name>membersMetadata Schema Extension</name>

<t>This specification defines a schema extension for the SCIM <spanx style="verb">Group</spanx> resource to support the discoverability of membership management policies.</t>

<t><strong>Schema URN:</strong> <spanx style="verb">urn:ietf:params:scim:schemas:extension:groupMembers:2.0:Group</spanx></t>

<section anchor="the-membersmetadata-attribute-definition"><name>The <spanx style="verb">membersMetadata</spanx> Attribute Definition</name>

<t>The extension introduces a single complex attribute to the <spanx style="verb">Group</spanx> resource: <spanx style="verb">membersMetadata</spanx>. This attribute is defined as follows:</t>

<figure><artwork><![CDATA[
{
  "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",
      "mutability": "readOnly",
      "required": false,
      "description": "Provides metadata about the management of
        this group's members.",
      "subAttributes": [
        {
          "name": "policy",
          "type": "string",
          "mutability": "readOnly",
          "required": true,
          "canonicalValues": [
            "inline",
            "external",
            "hybrid"
          ],
          "description": "Specifies the policy for how membership 
            of this group is represented."
        },
        {
          "name": "ref",
          "type": "reference",
          "referenceTypes": ["uri"],
          "mutability": "readOnly",
          "required": true,
          "description": "A URI that a client can use to query for
            the group's members."
        },
        {
          "name": "memberCount",
          "type": "integer",
          "mutability": "readOnly",
          "required": false,
          "description": "An integer indicating the total number 
            of members in the group."
        },
        {
          "name": "allowedMemberTypes",
          "type": "string",
          "mutability": "readOnly",
          "required": false,
          "multiValued": true,
          "description": "A list of strings that specify the resource
            types of members allowed in this group."
        }
      ]
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="usage"><name>Usage</name>

<t>When a Service Provider uses this extension, it <bcp14>MUST</bcp14> add the schema URN <spanx style="verb">urn:ietf:params:scim:schemas:extension:group:2.0:membersMetadata</spanx> to the <spanx style="verb">schemas</spanx> attribute of the <spanx style="verb">Group</spanx> resource. The <spanx style="verb">membersMetadata</spanx> attribute and its sub-attributes are read-only, as they are metadata reported by the Service Provider to the client.</t>

<t><strong>Example <spanx style="verb">schemas</spanx> attribute in a Group resource:</strong></t>

<figure><artwork><![CDATA[
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group",
    "urn:ietf:params:scim:schemas:extension:groupMembers:2.0: \
        Group:membersMetadata"
  ],
  "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
  }
}
]]></artwork></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The security considerations for the <spanx style="verb">GroupMember</spanx> resource are substantially the same as those for the <spanx style="verb">User</spanx> and <spanx style="verb">Group</spanx> resources defined in Section 8 of the SCIM Protocol document <xref target="RFC7644"></xref>. All requests <bcp14>MUST</bcp14> be made over a secure channel such as Transport Layer Security (TLS).</t>

<t>Authentication and authorization for managing <spanx style="verb">GroupMember</spanx> resources are the responsibility of the Service Provider. Implementers should consider the following:</t>

<t><list style="symbols">
  <t>Access controls for <spanx style="verb">GroupMember</spanx> resources may be inherited from the parent <spanx style="verb">Group</spanx>. For example, a client that has permission to view a <spanx style="verb">Group</spanx> and its members should also have permission to <spanx style="verb">GET</spanx> the corresponding <spanx style="verb">GroupMember</spanx> resources.</t>
  <t>A client authorized to add or remove members from a <spanx style="verb">Group</spanx> (e.g., via a <spanx style="verb">PATCH</spanx> to the <spanx style="verb">Group</spanx> resource) should have equivalent permissions to <spanx style="verb">POST</spanx> and <spanx style="verb">DELETE</spanx> <spanx style="verb">GroupMember</spanx> resources for that same group.</t>
  <t>When a client attempts to retrieve one or more GroupMember resources, whether through a direct GET to a resource URI (/GroupMembers/{id}) or through a list request to the endpoint (/GroupMembers), the Service Provider's authorization decision <bcp14>MUST</bcp14> be based on the client's permission to read the parent Group. A client that has permission to read a Group resource <bcp14>MUST</bcp14> also be granted permission to retrieve any GroupMember resource where the group.value attribute matches the id of that Group. This policy mirrors the existing SCIM behavior where access to a Group resource implies access to its member list. A Service Provider <bcp14>MUST NOT</bcp14> require an additional authorization check on the member resource itself as a condition for retrieving a GroupMember resource.</t>
</list></t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests that IANA register a new URN in the "SCIM Schemas" registry.</t>

<t><strong>URI:</strong> <spanx style="verb">urn:ietf:params:scim:schemas:core:2.0:GroupMember</spanx>
<strong>Specification:</strong> This document
<strong>Description:</strong> Defines the schema for a resource representing a single group membership.</t>

</section>
</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">

&RFC7644;
&RFC7643;
&RFC9865;
&RFC2119;
&RFC8174;


    </references>





  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+U823LbRpbvqvI/9DI740uRFEnJisSaTEaWlLGmLNtryZNN
sqphE2iSWOPCAKBkxuV8y37LftmeS3ejcaMox/HO1vpBJgl045zT535Br9d7
sJMHeajG4vLk/EKM+gPx1zRZLcWFiqYqFW9UlqxSTz3YkdNpqm70fe492YOd
YJmORZ6usnw0GBwNRnB3quRYHC+XYeDJPEjiTMjYh+1k2LsKItjvNknfzXEb
3vLBzju1ht/88YMdIXoi84KIPy3T5CbIYIsgnvMvga9igHr9YOfBzjIYi5/y
xOuKLEnzVM0y+LSO8MP1g51sNY2CDBdfrZeA5PnZ1XcPdgAiNU/S9VhkuQ83
RTLN//HzKslVNhZxgtv6iRfLCFb4qZzlvV+SMIxV2kOoegR1L2Lke4MB3i9X
+SJJNez4VwhefyrjeC1+5PV8IUnnMg5+IbKMxat3ueTfVSSDEJ6IK/r6iX9J
4HLfSyJ8SJykEay6UfScN9+dfH2wv+983jOfjw4PnsLnHh4v/SfkNMtT6eX4
/WoRZAIQXEVARqHe5yr2M5EvlLhcZ7mKxCxJxUmaZFnPTwCmWJxrgosLGcu5
onWP8NQeE8dkOZytTH0xXQtfzQI8KSFFrG5FhziFGaUj8mTZC9WNCkWq+aov
3sY+8Bk+Xb0PshyXRokPt9BOyhfw/J80ftddQcQXmviLYAl8lSrYbgk7Alhw
v8zEjQxXKsOVUkSrMA969Atcy/M0mK5yJW6DfEHXmZULeIg6MvUWQa68fAWb
h9J7l8FxIuVFtlougdGIRplKb5ApgB/FUs6DmI60K2ZBmKsUMOkKvAtuR6yS
GQDkBzeBv5KhwaAvzmPAdBkma6RqJiKkMN4eynSugOFkqBjpTDxS/Xm/K4aD
QXcwGAA1xRA/0Be9Hz4wSlL1uAsoAa7qhs+ijCV+ALIQhSIJ8gGIPb+6eo2/
L0FWEZ11mEhiC5kLT8ZwOp4CCsLDL57huiz4xVALL4dK+ggR0iSAJ+Qg5Mkq
B2kEyEDWYP1CgoIgAqEqiFWOKgC2AvaZBiGwF19YwAGGijYDYqzhz38CUqR2
gmgZEvdpleItkiRDBOHeOMnt4QDqq5S4EPmKzh7Jj186mlAdhxfwLMsEyjRm
JByoPgDMPE38FVwCas5CWKyQOS1FmWeJWiqW0xDuq7MqgDmFZbMA+CdNIodp
CPMEANSYgtIDpZaEYqYkMiHQEQBZIVMhKCpNlirVZKO18HWG6iEGWAAG4pu+
kf4o8P1Q4bevxGmQeStSieLvKgYxsSoBKKhEoKEEzKLkBjCcKtgXGGI1DQPA
ArkJdTmqGdr/kvFHGuakWFBhEkhwE+heID1qnneAGfLJFG9d4dVcLPJ8mY13
d+cgi6sparldrSj93bqmBQr2GYVzfRZIOIb+k1WXpbNVMfrD/jWS4hZEO1yL
VQaEwK1BzSeogjVnuaaJ5JsfFiCTeAiF8INsKVOwN2CUEEBgrO8XAYg0nTLK
VJghKazYOyriLcgSEbLCm10RgOj6KgvmMUFltR9ukKqQpQM5DmzhUnnBDIxw
CHjUOBK5yoPjyFF14H50K5DIZadpkoOHECvUgkBRVzGhxk2XaZDhx5sgTWLS
Yn2Bx3KySlP4FoJct0ke0Kymm1D9tmjtvnimPNAimnxJDDhpmc+sMBENLKmk
8MIADz1VPwOz543qMALFBN88hYqQTBHQEjU/GCSEsUQ3NiuodsKK1uyL75BH
9O1oYQBE2D0IQxQ3vR61XEXbomCAw+QthFwCT70PgMeQ70ZVZQunzPQvFLQH
C5G9wKymwDReCvwHZyNm4Eyg9VomQUya3gtXPllX1sfIMhne4Cpjo7X5AMuO
AgC2TDLFnkLZrltC5uBlwSGtQeSV1LQu2I00B1jHNMt7Xgh2p9vgEXTFpTYh
r1G6fKQ4GxhEcO64CcQDcKiIDMhYpHI+HYMom+GuIAZn20JsBTbE1bywbpH4
eCxhmNxq0Y5QC1pzg+eN/I56nfYBIQvoC+nimdQK0EqxNtjI3mDB+PRYd71M
2HjBCZ0k8Q0yGrCA0WLgAwt0gjPRuXh7edXp8v/i5Sv6/Obs396evzk7xc+X
z49fvLAfdvQdl89fvX1xWnwqVp68urg4e3nKi+FXUfppp3Nx/EOHidR59frq
/NXL4xcdZL28xATobLF9CFj0FbtcO6COgPWm7K89O3n93/813BcfPvwLaNPR
cHj08aP+cjj8eh++3C6U9gNIiPkr0H29AxKgZEpCFgI7y2WQyxBPBxTUIrmN
BdhI1d/ZefITUuZ6LP409ZbD/T/rHxDh0o+GZqUfiWb1X2qLmYgNPzU8xlKz
9HuF0mV4j38ofTd0d37807chOMGiNzz89s87zEHIJ470OSGalthMkWXUDjTL
68RZMXFk7XYRgNaxBiQrNJsjtq5JgaPPb5VCFehEgmTu9RKS/5JJIs1WVQM+
SbGX30cHkHypBseqsJpobawgo0y2OOaFv0WelA5RXcfpq68saREMuAsNu5HU
ZoKi8TJxCwRDSPlZYqBZ2k3GuEvmgZqRsCHEyW1RCnvfCTi84CZziIZE56Xi
7ZuXWeF4uSGMwmv6UplbzF0PgaLo1+mtYP0EXOZxoPLZmLRpNkYXbKyhHOPN
Y/CYxi7e2ksmi/3kiZG0J08ci/1g58MYI0Fk4286ebpSnY+IfeAz4qs4ABWu
PadZABAaqNtYdg6uCHpUlsJVXmmDCkMi6fdI4TguxQn5B5kg7UF2i+nJYQPw
arKUACIq8GZUiB0ZG3BhwWS8r57gkiFDgFI1A/2FbhWoUfIhJTpJLWGo3abE
AwVLZatpz97EbIWZBAKdP46JGyaBPzERkIWg6lj2S9Tq83r++6+wyN3v7Zvz
LbZ7Y8it92oiXzNJWbY/maZRmdeNmtPxhyTPGlUAKwACm0J1NNb8W8mjKYJg
Wq13J9+Vzv4LnVYFq9px3eeoanu5Z8XLEXOz0bHI8pRdI9SRHFNo01ImlX4U
7w/hBWUsOkjwDlKY/cbOb+MNTJg1c4YmPLu5ufRlLoWcgkdbgtQoCPIUjYE0
FzFROBGPmGNIJ0wr7u7jrpiw1+1P4CM4svlF4iNB8DsalkmYcNZzUsCWuWrJ
nFuzSmrDHCzS3y5fvQTaaeMq3Qi44LOAAnT1XiJ5mE/bzFXMO1Ksl9ukBy90
vILiSMmA05YUnhYptL54hKxncm8AdeyRlkZ9zvuTM7BcpRRGPCb+//XXXwFb
ZIGOtjSdsfipc29T1Lnu0iaBD+s782g42tt/2uHfSEbh5w/MaR2CEG9TR2pv
4E9lbzY4nPX2h3tHvaP9fa83UgdH+0fTw8F0oPeAVYgcLjJJC00lylogeLs3
o10CKNvFfd+/f9/BlR8ZBiZeExCjw+GRNxrt9b6efX3Q23+6J3tHwyMfwTk8
GB4N9g/2D+4FBJ5LtovbIgxmJQonriRJLAGWSwcsVwrwdpfEZivN+wT8YHTQ
G4x6o/2r0WA8Ohjv7/9o73MF4+6btcRsRWJdeNg150z4PNj5qPmp7LshKi0i
U/UcwCmavCnpAeY5kOobCKc5/GNdMtl1b8wmQsU+hdpdVhpauZAgxjmEqDOr
/TQ5SdE+eXKmpc3djpeMnzz5zSLi7lqWkdrJdrBg0XzF4IZXSyegr3PwtzTn
Z0lfigJsZFF13/t6FwYeN7i/+JcO3+x9YUwAOyaX7OqemZwucUGCiZAbCm2j
aTBf2XwqswTljzAeXcp8QWfI6SRMXVCsZdJrnMQNs8SGXaSCTfpYu9ll33ZS
tUgt6WYspNRsHVieCpoT4+dgIg9AERAut9RLOJDyXUyzusUENe2uJIb9fsGx
X0VyijQcC4fLJK5sBLnQAbQRELq/iombIoxr1KIUta+8EFHBXKhjmqIizbtM
wsBba5qD2FpfTTkBlD2SKs/oW5wjuStEsreO5w72BatOtGa6asT42GBsI8wN
RCEnou7+UMrxTp+T6cIulHFEWvw75CCHuDbWZK6ioNMW3vriPGfdt5A3ijKf
2hksoGHnwHq+QYwujnEyzyGIR5dBF52KBz20J0zMO1thLtst+VGaqqDYpCm8
K/I2mM7fyKYVPEuREB5yCtJ1X6CNxKn3wPZYcAMUbgK5EY5+iVXc8zd+aRIF
OflYWE2iZ1dlpaATqagSLov1NMU4vAWTun0UF8c/6OKamw1voX1XTLXjDaFT
ElNWmpOt5WRpKZGTEVUqFKmd4pJCGThIU4nZeJScrS1qZSbHc7+4g+Kqksxg
aEW0skUGjBGJuxKdmDbapcIShaxMmRWdKK0VFZJuibj3lslyFbJ3TSkt+xyP
ay72eeen+KhMO+Ckw35yt//Hmd79+lve6RtmeU5+qJ9Fh2//x/npdWfSGpkw
WieYaCcaxcLkMgWcfC9Wc66eY9J4TmED8Zo5vTzJgTfilYmrK7xlpLD52ZTt
Uz4jRM5YFYSW5JoTLEpb6mE9mLmKcF0PczPxqBwwPnbB1hDZ7Plm+MEiGB+Q
/RTjPmV8tbhM5QTROdMqqCNea03eFABaTaDZhstGNRprHcM2YUIM0jE6rjPp
tsk2PWKKaoUjXuI9lgFMgQap8nKu4VtlC/IzQT7vf564r+zNbh/KdbAkG8r1
S+3tHoehOIuwAUMp489+qpkX/4HLCbxxxXo7MRbTmqA2hO7a8Gu7GFM/1Mgs
P1cIR3b/MBqon+HPH0ajbWgDt1kgHGEGYIZPB3uj4T0jxk8L67JdgwjY2W0O
tCHuK0uL6DwnG3c/UckiLD1tJSpsQlFQSioNdMctlfkdz5LcAO31+tr14YiC
6oABJua6JrzAWtcqBFOVBwDK/cyd4wIXtY3fRerkYDr0Rv7e/aXuUmKHzJWS
UcdNkBA82jAbTvi0VEnxSFz5DHSV+BuIrYo7fP0j/nf9OcQd/20v8pphPpPA
t4n8NgezQeTNz3XTSvxCOaSuEfXrL64btmK7um7gFiAUoabyadEHVdRPuaTN
YVBzBrXs3BcCWmri6oPTWF4ecKFVp1mNY4Fqo1SKBRXxDgueRc113lBuPQaQ
V96iW+61QFeU8srgYeqMne0JxI+gKHwVKgrc3i79hm4Nam/MAAhs/wFkpMed
JcRsVJD3FjKeG5QZtFI0LW5Jic1WsS+pba8UuOnMRvHELjXxSeylK3Iq2iu2
XR8QV5IiTqkvrduUi2DfrUhI1PI05Hm73UOsVF+/urzCjP5fz65MIv/07MXZ
1dnENInUq63c8kKNcLWSNUZLlBIyT3E1c7WrKF/A1/mijGyT52XChGqgJ7PG
llkbGujEO66fSu/drcQ2E8whAE10cET2zz5cm6K+eA5K4AarObeU/PGpu4bi
qii5cSI4DkMNk3JkhOhjR2eL+DRV+ul0qNtRFaFolmOXU4o90tj4CRYNoCQm
4ka7aZIvKrFuxv1YWqV0md2Zy1vKIfRk7o01sQeYP27T8gtEQaS4y4w7JHXw
XfKT01SuMXXVdFLgK8w0dVx3WjPJhrq2jhZOTG9VoxoTj5CNH+vkJhxWSczQ
I9cH1HWd9ox6wKWWAdMsZ+qpk2Zvgx0ic+808ddMQR1YtdLZdCWurTvjWLEJ
C55WbvwTp8pB87/hZ40FgikaTaS5kVvrxmI0GDLFgLBFfmwFXlV7TQxvQXS6
TjcZ5hkxels7DQhUqNXglhJ07G4dNyRQqrxNfFuoTxNL2fqsrdgyUwQpPTRj
KTXNuZ7hiPa+ib44nwkVUHG7TVv7iaIuYN6825wC0hkYnQWCI94fDMQz6Zuz
AfZIU9hX+9ITPCOupYDimQQxnGjg/7041nO3YMztQSEWRdcMRdYChhbVAogj
7KebgZtlIKDdi+oKM+kzOFVKPzIDlRnn85cjf1vp8fPVD5sLZHY+oEWRgB0k
PdLm+uiOCOtUII+iIjE69uwemsQk+LgVljekDvKiH9pKKDwGpZHbJFIneVO0
7xuFASpwrqh/UzsADqONCcRmLbL7IfA/Tsp7hKGbqty0emJi0de2+azFQ0Au
Nt6B05OKotJCdFTg6JbbSBF+sATjJE+m8syJW3WHnPY+qIjpLVbxO6bSeeyr
972pxBb3AlzdiAJWN83pDq3nqJd2Uu+6pb5Q6ogPIgmXnDyv24DX6KPsX9vj
0uK6ibbfFjB9M/wjwfPNcDAYTHTLeYYcUXsMTkSxKwROd0pm221xJ2V1gzgx
BbkCpEwj9LagFdD80SNIvpHfP33347/Pjy6ujt9PTPbB9n3TSIEhEE2TsLBw
UuIFcLWxYxM3W9mu5bNaIhg2N+2MX4nvTP/jFtxoeyWtG3OHka63uphBGIdT
NdGLNnXkpAD9QAxh8OA6cG6+K2ycyLHyyyqVeonsnbrd2rlrRc0pmdut1e9o
n6j5ATyLiKnj9vNtTpFvqcubs78uPBoN5goGbjuA3HOgpP2WRqE1IX1qXOUW
y8BhkXEy2REuaO2GAc1epgmrKtbBqYLYk2xxZ2oeod7zbnVeuIaT0WBfvEzQ
ccBQYoKcDmwIGGbgIOp4gWpmRJRnq/CdeGUzaqRvHKulBzFQMDiwLqYN2oTV
nSQxpHCTfPhEJ7nXpj1tY9kimC/AQVUzIBwRnKYU17EHsWUc/FItts2q0yo0
b0dBvTahd/eVMYj2HCmq8XFu8DZxo3s9NYF8klFpuBj2rPNMyXMjqptTdn20
uz00uQzGERwmqEBO2OFeeivy0Do4JPMqPkN3MdOJr05xwpyM/GAyW2DQ0OFC
z1EnLbEppK0nZgrPOucsqe/3UB/1hiYXWk4Ofg5P0/U17+tmah+z5GU6e0jl
Hx1+fTDrqcM9r7e/9xT2OJJ7vb2v1eAQdMzB4HDY4Xwqupjdz0mx0f9Jik09
9XS0N5S9A38PtO/08KgnR/tHveH0aLinhgd7e4fTzRRjXbaJZrvlHseCdqx7
mHx73Bd1XU6D1mKpE8ym+K5ea8mD5jrcD1LF08qoQep+BGmBYnhqQ1BqzE2Q
eaAZyNu4dAasq8ML7qhLy2NLCb0NWR7TPsTZQb2IQ3+MsctdgOTscPvYxLZJ
Wa/K9JVpNb2pudDswVPy2ieutxbybe1NhTaFoZuUiu34SD5hlKNiXC712Y/6
e2yRnSEwi/h5tJRebvzDcvGa8h88U1zacK8xY4uZUnRwg3hFzROlU2zKgTZn
1gj5luQmDt4qYOaEuqKSTWkFzDFSAitPZZxJT8/rUfNCappIbArSW9v8fJGo
NEnaBthNiqd0YznN2OIvEOFLKc1g1uJNVVto2AEiB4v43Tg53fYkJ5GC8rfO
NHh7rnPmTrPU+xtp2DHNFM5nEdT6KZRKd/YuirHYB4QJyeOrk+f1PIKpClm8
mjDZpAAAKVP/2EKdUJouUugbBVlk+5CoNxQ8LjsfyerD5Q16MQD1+wCqziQg
748Mq91+nTBzotBaBbopW17Rs00MB3sD2yoeM6AcTW6zhQ85h6b8h0aZ6DG1
NZL6YYyJ/4dmeFVrunozNSgDV0+fYFKSb270IrkpEGLvsDTPVqixO4bAqsVs
rkbf3xO4q++50tdMsNYb60rNzaW6bEOTcxEkN5W6DShzt1DqdO/rlk/nSrQy
b8/A60FE30Pl3KENNpIIY7ziAo/exaAIcGkMXrlbPC+jfmVTxqAWucvYSRw7
gXbf2SNbTY8b0C2hXEKbPahu6ZpBnRuzKhfvxH4jBe6kQhslAt/oO45XOsWC
j927kKQZjmYcbbq/hoD+vajBu90YLeTALPorEPl2asxAvX8Gcjhhe50e5uO1
7rvotvF85EheiSr/q0xv00cuev+vWNzI9Zfn8UqfyT8br38KYYgKn3z6XwzL
plFOd43Qg50P8YgeYjL2IR3Sw42iTy1XlSpUdeyicUin3sFhh2zqcxrGdSBr
XYsQKsGFryNP0x5eqprUhkkCU1l6cmkHSMZPnnyeuZA7B0PEqfWPjFfVMjCk
fZGGyemkMW4a1x9bm2l23mwgM+3OZdUZzi0csbuo0e6UFY11jd7ZcTMrcFha
qp+Z2S5my8rYkzPy4vZ23c9/q3YC3t+o1UW9XcyrlHjdOtGlyi1Ihaw2za38
JjunOx5/R1VXt3N2zITaCypg0h3cdVveU9T7sO0F3a3p/nq9UXlelkbjnQm0
yiRV+Tkmw9I4VnUv+/JZ7O4qDX6rta0fTk1at5ueKROqaZTmXvRxG12b6aRH
VD6/Ha4SIN5qGqbGKI2zMfeiQUNX75f1SKguRjK6JatsPZxT4Raa1LlzMOee
LstX4i1WlDYNw674NWnuRC+NvnJKzdf5v2IG9V7+A5nKmpdgLHtmUsd3Noz2
W/yNcqYSG23KM6T6hav6tRXU0wHbr9lYGoMDCmxjL6OBlyW/MgrfhETDu1o3
zsfz+d1rtKG7zZqtxgHaBgKIm/4Zx5bEXZB/ieml331+yZVjCj4ulbeihH5T
BQz7qPRlr3T5juQkCQKIDL4VOQ+o5Z3EHQ6OZSXJVLEFBlC6wFSRz8Z6zKGR
ZopuXpu3l9r8s9MUgByis+aZTXlHEvxeDHgwSkD0FNX7YxXaBpwrLHpQgPRC
rrHh01Dh0dWLy8fc2LoCEOLcvvYA+1foBdj6rdbl+d5NkxN50Q4VFCFYY/cz
lps4000vK+X5KHMyOqWsc8xj0x1yTHUOKi2lSaiLYy3gRHLN7zVcKMyWO7WO
clGj0lVuvRcyStjqvlSpfuk4armbQN06VQ2jU41J0njoPvkbVVnNTZT3qxAR
4gYqcy48jIm2xzTuF4NplcKLfs10uf7SEjk+NggQ7Gj1QXoVv0BWo0Ehl+4r
L81UbG5hQwuPIlN0hCBe2uIa5PJcRctKDyS9eIDfgt345ruM5hh0IzTPXEg9
sUqdVlQ9s8KMXuqjeintMbdOm+XkoFRKVLZtp7z8cXPlERzasgj54N1kdlgF
GJNbNHXlkwnwsMpsKb2Fe1F+q1y/4IYWHqVltbfilgqAc9AKOXdNlhbaTt11
I7GR1FrM3a65wq5HMgcDxeGSyTlKCzjlIHQUFQXUplMekCE1OFXAfQH2nNPD
JAs9nWMFJSyW8duZzS2FLNIhIq2ai8L44gjt1mIXFE7B6Lpw+dwAG++dOaao
Qg14mgpn/AJMD0XZasv629orlDS9EufHL4/bOjasGbB6n4hJS1I1x5JkqsdB
0O3UIQTXtXTPQUffmK61UwYCcHeKq7GlgPJkbtYO9ynBiXecFs4+Xj91Xlrq
vDTHkcgtXyq08z8ZzVCY3WIAAA==

-->

</rfc>

