<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zollner-scim-group-membership-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SCIM Group Membership Resource">SCIM Group Membership Resource Type Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-zollner-scim-group-membership-00"/>
    <author initials="D." surname="Zollner" fullname="Danny Zollner">
      <organization>Okta</organization>
      <address>
        <email>danny.zollner@okta.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="28"/>
    <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 "GroupMembership" top-level resource. Under the existing model defined in RFC 7643, 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 memberships 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>These failure points have already led to workarounds that avoid the problem rather than solve it. Some service providers do not return the "members" attribute at all, instead exposing membership only through indirect filter queries against the Group resource. Some clients request that the "members" attribute be excluded from Group responses altogether, using the <tt>excludedAttributes</tt> query parameter defined in <xref target="RFC7644"/>, for the same reason; this leaves those clients able to push membership additions and removals but unable to read back and reconcile the service provider's actual membership state.</t>
      <t>This document proposes the "GroupMembership" 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 scalable 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-groupmembership-resource">
      <name>The GroupMembership Resource</name>
      <t>This section defines the <tt>GroupMembership</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>GroupMembership</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>GroupMembership</tt> resources. A service provider <bcp14>MUST NOT</bcp14> maintain more than one <tt>GroupMembership</tt> resource with the same <tt>group.value</tt> and <tt>member.value</tt>.</t>
      <section anchor="resource-properties">
        <name>Resource Properties</name>
        <t>The <tt>GroupMembership</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 GroupMembership resource's core schema is <tt>urn:ietf:params:scim:schemas:core:2.0:GroupMembership</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>GroupMembership</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>/GroupMemberships/{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. When populated, this value <bcp14>MUST</bcp14> match the current <tt>displayName</tt> of the referenced <tt>Group</tt> resource.</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. The value <bcp14>MUST</bcp14> be the <tt>name</tt> of the member's <tt>ResourceType</tt>, as defined in <xref target="RFC7643"/> Section 6, 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. When populated, this value <bcp14>MUST</bcp14> match the current <tt>displayName</tt> of the referenced resource.</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 "GroupMembership"), <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>Service providers <bcp14>MAY</bcp14> optimize payload size by omitting the <tt>group.display</tt> and <tt>member.display</tt> sub-attributes entirely, or by configuring them as <tt>returned: "request"</tt> (available only when explicitly requested via the <tt>attributes</tt> query parameter). Because these sub-attributes are optional and read-only, a service provider that never implements them is fully conformant.</t>
        <t>If a service provider supports neither creating nor deleting <tt>GroupMembership</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>. A service provider that does not support <tt>POST</tt> or <tt>DELETE</tt> requests for <tt>GroupMembership</tt> resources <bcp14>MUST</bcp14> respond to them with <tt>501 Not Implemented</tt>, as defined in <xref target="RFC7644"/> Section 3.12. A service provider that supports these operations but does not permit them for the requesting client responds with <tt>403 Forbidden</tt>.</t>
        <t>The <tt>ResourceType</tt> and <tt>Schema</tt> resources that describe <tt>GroupMembership</tt> are discoverable via the <tt>/ResourceTypes</tt> and <tt>/Schemas</tt> endpoints, respectively, per <xref target="RFC7644"/>. Examples are provided in the Resource Type Representation and GroupMembership Core Schema sections.</t>
      </section>
      <section anchor="json-representation">
        <name>JSON Representation</name>
        <t>The following is an example of a <tt>GroupMembership</tt> resource in JSON format. This example represents the membership of a user in a group:</t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMembership"],
  "id": "gm12345",
  "group": {
    "value": "e9e30db",
    "$ref": "https://example.com/scim/v2/Groups/e9e30db",
    "display": "Engineering Team"
  },
  "member": {
    "value": "2819c22",
    "$ref": "https://example.com/scim/v2/Users/2819c22",
    "type": "User",
    "display": "John Doe"
  },
  "meta": {
    "resourceType": "GroupMembership",
    "created": "2026-02-24T20:26:44Z",
    "lastModified": "2026-02-24T20:26:44Z",
    "location": "https://example.com/scim/v2/GroupMemberships/gm12345"
  }
}
]]></artwork>
      </section>
      <section anchor="resource-type-representation">
        <name>Resource Type Representation</name>
        <t>The service provider's <tt>/ResourceTypes</tt> endpoint <bcp14>MUST</bcp14> include a <tt>ResourceType</tt> resource for "GroupMembership".</t>
        <t><strong>Example ResourceType entry:</strong></t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],
  "id": "GroupMembership",
  "name": "GroupMembership",
  "endpoint": "/GroupMemberships",
  "description": "Resource representing a single group membership.",
  "schema": "urn:ietf:params:scim:schemas:core:2.0:GroupMembership",
  "meta": {
    "resourceType": "ResourceType",
    "created": "2026-02-20T13:43:00Z",
    "lastModified": "2026-02-20T13:43:00Z",
    "location": "https://example.com/scim/v2/ResourceTypes/ \
      GroupMembership"
  }
}
]]></artwork>
      </section>
    </section>
    <section anchor="groupmemberships-group-schema-extension">
      <name>groupMemberships Group Schema Extension</name>
      <t>This specification defines a schema extension for the <tt>Group</tt> resource with a single attribute, <tt>membersEmbedded</tt>, which states whether a group's full current membership is delivered in its <tt>members</tt> attribute. The extension lets a service provider add support for <tt>GroupMembership</tt> without changing how it returns <tt>members</tt>, so existing clients are unaffected, while clients that understand the extension get a per-group signal. A service provider that only exposes memberships through <tt>GroupMembership</tt> <bcp14>MAY</bcp14> omit <tt>Group.members</tt> and need not use this extension.</t>
      <t>The schema URN for the extension is <tt>urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group</tt>. A service provider that includes this extension on a <tt>Group</tt> <bcp14>MUST</bcp14> support the <tt>GroupMembership</tt> resource. A service provider that supports this extension <bcp14>SHOULD</bcp14> list its schema URN in the <tt>schemaExtensions</tt> attribute of its <tt>Group</tt> <tt>ResourceType</tt>, with <tt>required</tt> set to <tt>false</tt>. As with any schema extension, a <tt>Group</tt> that includes the extension lists its URN in the <tt>schemas</tt> attribute, per <xref target="RFC7643"/> Section 3.</t>
      <section anchor="the-membersembedded-attribute">
        <name>The <tt>membersEmbedded</tt> Attribute</name>
        <dl newline="true">
          <dt>membersEmbedded</dt>
          <dd>
            <t>A boolean that states whether the group's full current membership is present in the <tt>members</tt> attribute.
</t>
            <t>A value of <tt>true</tt> is a guarantee by the service provider that the group's full current membership is present in the <tt>members</tt> attribute, so an omitted or empty <tt>members</tt> attribute means the group has no members. This guarantee applies only to responses in which the <tt>members</tt> attribute would be returned given the request's <tt>attributes</tt> and <tt>excludedAttributes</tt> parameters (<xref target="RFC7644"/> Section 3.4.2.5). A client that excludes <tt>members</tt> from a response cannot conclude from a value of <tt>true</tt> that the group has no members.</t>
            <t>A value of <tt>false</tt> indicates that the service provider does not guarantee that <tt>members</tt> contains the full membership. The <tt>members</tt> attribute may in fact be full, partial, omitted, or empty; for example, a service provider that cannot return accurate membership above a certain size can always report <tt>false</tt>, even for a group whose <tt>members</tt> happens to be complete. When the value is <tt>false</tt>, a client that needs the group's complete membership <bcp14>SHOULD</bcp14> retrieve it from <tt>/GroupMemberships</tt>, filtered on the group's <tt>id</tt>.</t>
            <t>If the attribute is absent, the service provider makes no statement, and <tt>members</tt> is interpreted as defined in <xref target="RFC7643"/>.</t>
            <t>This attribute does not affect which operations are supported on <tt>members</tt> or on <tt>GroupMembership</tt> resources, and does not indicate which is the preferred way to manage memberships.</t>
          </dd>
        </dl>
        <t>A client retrieves a group's memberships from <tt>/GroupMemberships</tt> using a filter on the group's <tt>id</tt>, for example <tt>/GroupMemberships?filter=group.value eq "[Group_ID]"</tt>.</t>
      </section>
      <section anchor="example-group-resources">
        <name>Example Group Resources</name>
        <section anchor="example-of-a-group-with-membersembedded-set-to-false">
          <name>Example of a Group with <tt>membersEmbedded</tt> Set to <tt>false</tt></name>
          <t>The following is a <tt>Group</tt> with a large number of members. <tt>membersEmbedded</tt> is <tt>false</tt> and the <tt>members</tt> attribute is omitted; the client queries <tt>/GroupMemberships</tt> for this group's membership.</t>
          <t>Example Request: <tt>GET /scim/v2/Groups/e9e30dba-f08f-4139-944c-2e6949b80b05</tt></t>
          <artwork><![CDATA[
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group",
    "urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group"
  ],
  "id": "e9e30dba-f08f-4139-944c-2e6949b80b05",
  "displayName": "All Employees",
  "urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group": {
    "membersEmbedded": false
  },
  "meta": {
    "resourceType": "Group",
    "location": "https://example.com/scim/v2/Groups/ \
      e9e30dba-f08f-4139-944c-2e6949b80b05"
  }
}
]]></artwork>
        </section>
        <section anchor="example-of-a-group-with-membersembedded-set-to-true">
          <name>Example of a Group with <tt>membersEmbedded</tt> Set to <tt>true</tt></name>
          <t>The following is a <tt>Group</tt> with a small number of members. <tt>membersEmbedded</tt> is <tt>true</tt>, so the <tt>members</tt> attribute holds the group's full membership.</t>
          <t>Example Request: <tt>GET /scim/v2/Groups/a0b1c2d3-f08f-4139-944c-2e6949b80b05</tt></t>
          <artwork><![CDATA[
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group",
    "urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group"
  ],
  "id": "a0b1c2d3-f08f-4139-944c-2e6949b80b05",
  "displayName": "Sales Team",
  "members": [
    {
      "value": "2819c223-7f76-453a-919d-413861904646",
      "$ref": "https://example.com/scim/v2/Users/ \
        2819c223-7f76-453a-919d-413861904646",
      "type": "User",
      "display": "Babs Jensen"
    }
  ],
  "urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group": {
    "membersEmbedded": true
  },
  "meta": {
    "resourceType": "Group",
    "location": "https://example.com/scim/v2/Groups/ \
      a0b1c2d3-f08f-4139-944c-2e6949b80b05"
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="managing-groupmembership-resources">
      <name>Managing GroupMembership Resources</name>
      <t>This section describes how <tt>GroupMembership</tt> resources are managed using the SCIM protocol. A <tt>GroupMembership</tt> is fundamentally a link between a group and a member, not a resource with independently editable state. The <tt>group</tt> and <tt>member</tt> attributes of the core schema are declared immutable, so a different <tt>group</tt> or <tt>member</tt> value represents a different membership, not an edit to the existing one; as a result, <tt>PATCH</tt> and <tt>PUT</tt> have nothing in the core schema to act on. This does not prohibit a service provider from supporting <tt>PATCH</tt> or <tt>PUT</tt> as methods; a service provider that adds its own mutable extension attributes to this resource <bcp14>MAY</bcp14> support <tt>PATCH</tt> for those attributes without contradicting this document.</t>
      <t>If a service provider supports the <tt>GroupMembership</tt> resource, it <bcp14>MUST</bcp14> make available via <tt>/GroupMemberships</tt> every membership the requesting client is authorized to view. This requirement is independent of whether <tt>Group.members</tt> is also supported or returned; a service provider <bcp14>MAY</bcp14> choose not to return <tt>Group.members</tt> for groups whose membership is exposed via <tt>GroupMembership</tt>, and this requirement does not mandate supporting <tt>Group.members</tt> at all.</t>
      <t>Service providers <bcp14>MAY</bcp14> also support management of group memberships 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. When doing so, the service provider <bcp14>MUST</bcp14> maintain consistency between the state of the <tt>members</tt> attribute and the state of the corresponding <tt>GroupMembership</tt> resources. For example, if a <tt>DELETE</tt> request to a <tt>/GroupMemberships/{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>GroupMembership</tt> resource <bcp14>MUST</bcp14> be deleted.</t>
      <t>When a <tt>Group</tt> resource is deleted, the service provider <bcp14>MUST</bcp14> delete every <tt>GroupMembership</tt> resource whose <tt>group.value</tt> references that group. When a member resource is deleted, the service provider <bcp14>MUST</bcp14> delete every <tt>GroupMembership</tt> resource whose <tt>member.value</tt> references that resource. Deleted <tt>GroupMembership</tt> resources are subject to the requirements of <xref target="RFC7644"/> Section 3.6.</t>
      <t>When a <tt>GroupMembership</tt> resource is created or deleted and the service provider supports the <tt>members</tt> attribute of the parent <tt>Group</tt>, the service provider <bcp14>MUST</bcp14> update the parent <tt>Group</tt> resource's <tt>meta.lastModified</tt> and, if it supports resource versioning (<xref target="RFC7644"/> Section 3.14), its <tt>meta.version</tt>. A change to a <tt>Group</tt> or member resource that does not create or delete a given <tt>GroupMembership</tt> resource does not modify that <tt>GroupMembership</tt> resource, and <bcp14>MUST NOT</bcp14> change its <tt>meta.lastModified</tt> or <tt>meta.version</tt>. This includes changes to the referenced resource's <tt>displayName</tt>, even when reflected in the derived <tt>group.display</tt> or <tt>member.display</tt> sub-attributes, and the addition or removal of other members of the same group. The <tt>display</tt> sub-attributes are values derived from the referenced resources, not state of the <tt>GroupMembership</tt> resource itself.</t>
      <section anchor="creating-groupmembership-resources-post">
        <name>Creating GroupMembership Resources (POST)</name>
        <t>To add a new member to a group, the client sends a <tt>POST</tt> request to the <tt>GroupMemberships</tt> endpoint. The request body <bcp14>MUST</bcp14> contain a <tt>GroupMembership</tt> resource, specifying the <tt>group.value</tt> and <tt>member.value</tt>.</t>
        <ul spacing="normal">
          <li>
            <t>Request: <tt>POST /scim/v2/GroupMemberships</tt></t>
          </li>
          <li>
            <t>Response: <tt>201 Created</tt> with the full <tt>GroupMembership</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>GroupMembership</tt> resource. The service provider <bcp14>MUST</bcp14> return a <tt>400 Bad Request</tt> error with a <tt>scimType</tt> of <tt>invalidValue</tt> if any of the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The referenced group or member does not exist.</t>
          </li>
          <li>
            <t>The referenced member is of a resource type that the service provider does not allow as a member of the referenced group, for example a <tt>Group</tt> when the service provider does not support nested groups.</t>
          </li>
          <li>
            <t>The service provider does not permit circular group nesting, and creating the membership would make a group a direct or indirect member of itself.</t>
          </li>
        </ul>
        <t>If a <tt>GroupMembership</tt> resource with the same <tt>group.value</tt> and <tt>member.value</tt> already exists, the service provider <bcp14>MUST</bcp14> return a <tt>409 Conflict</tt> error with a <tt>scimType</tt> of <tt>uniqueness</tt>, as defined in <xref target="RFC7644"/> Section 3.3. The service provider <bcp14>MUST NOT</bcp14> create a second <tt>GroupMembership</tt> resource or return a successful response.</t>
        <t>Example Request: <tt>POST /scim/v2/GroupMemberships</tt></t>
        <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:GroupMembership"],
  "group": {
    "value": "e9e30db"
  },
  "member": {
    "value": "2819c22"
  }
}
]]></artwork>
      </section>
      <section anchor="retrieving-groupmembership-resources-get">
        <name>Retrieving GroupMembership Resources (GET)</name>
        <t><tt>GroupMembership</tt> resources can be retrieved by sending a <tt>GET</tt> request to the <tt>GroupMemberships</tt> endpoint. Clients can retrieve an individual resource by its <tt>id</tt>, or retrieve a collection of resources that can be narrowed using a filter on attributes such as <tt>group.value</tt> or <tt>member.value</tt>.</t>
        <ul spacing="normal">
          <li>
            <t>To get a specific membership: <tt>GET /scim/v2/GroupMemberships/{id}</tt></t>
          </li>
          <li>
            <t>To get all memberships: <tt>GET /scim/v2/GroupMemberships</tt></t>
          </li>
        </ul>
        <section anchor="pagination">
          <name>Pagination</name>
          <t>Service providers <bcp14>MUST</bcp14> support pagination of <tt>GroupMembership</tt> resources using at least one of index-based pagination, as defined in <xref target="RFC7644"/> Section 3.4.2.4, or cursor-based pagination, as defined in <xref target="RFC9865"/>. Service providers <bcp14>SHOULD</bcp14> support cursor-based pagination for <tt>GroupMembership</tt> resources, because index-based pagination can return inconsistent results when memberships change while a client is paging through them (<xref target="RFC7644"/> Section 3.4.2.4). Service providers <bcp14>MUST</bcp14> indicate which pagination methods they support using the <tt>pagination</tt> attribute of <tt>/ServiceProviderConfig</tt>, as defined in <xref target="RFC9865"/> Section 4.</t>
          <t>Index-based Pagination: The <tt>startIndex</tt> and <tt>count</tt> query parameters, as defined in <xref target="RFC7644"/>.</t>
          <ul spacing="normal">
            <li>
              <t>Example: <tt>GET /scim/v2/GroupMemberships?startIndex=1&amp;count=1000</tt></t>
            </li>
          </ul>
          <t>Cursor-based Pagination: The <tt>cursor</tt> and <tt>count</tt> query parameters, as defined in <xref target="RFC9865"/>. The first request includes an empty <tt>cursor</tt> parameter, and each subsequent request sets <tt>cursor</tt> to the <tt>nextCursor</tt> value from the previous response.</t>
          <ul spacing="normal">
            <li>
              <t>Example (first page): <tt>GET /scim/v2/GroupMemberships?count=1000&amp;cursor</tt></t>
            </li>
            <li>
              <t>Example (next page): <tt>GET /scim/v2/GroupMemberships?count=1000&amp;cursor=aW5kZXg9MTAx</tt></t>
            </li>
          </ul>
          <t>The response for a paginated request is a <tt>ListResponse</tt> containing the <tt>GroupMembership</tt> resources for the current page. The following is an example of a cursor-paginated response:</t>
          <artwork><![CDATA[
{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 250000,
  "itemsPerPage": 1000,
  "nextCursor": "aW5kZXg9MTAx",
  "Resources": [
    ...
  ]
}
]]></artwork>
          <t>A <tt>GET</tt> request to <tt>/GroupMemberships</tt> without a filter returns all memberships across all groups. Service providers <bcp14>SHOULD</bcp14> impose a reasonable per-page limit on such unconstrained listings (e.g., a maximum of 1000 results per page) to avoid unbounded computation over the full membership dataset. A service provider <bcp14>MAY</bcp14> reject a request without a filter with a <tt>400 Bad Request</tt> error and a <tt>scimType</tt> of <tt>tooMany</tt>, as defined in <xref target="RFC7644"/> Section 3.12. Memberships remain available to clients in that case through requests filtered on <tt>group.value</tt> or <tt>member.value</tt>.</t>
          <t>Service providers <bcp14>MUST</bcp14> return <tt>GroupMembership</tt> resources in a stable order across the pages of a single query, so that a client paging through the results receives each matching membership exactly once, provided the underlying memberships do not change during the query.</t>
          <t>For example, a service provider can meet these requirements without materializing the entire membership dataset in memory by ordering results internally by <tt>group.value</tt>, so that pagination can stream across group boundaries.</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 using the <tt>eq</tt> operator. 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." Service providers <bcp14>MUST</bcp14> also support combining these two filters with the <tt>and</tt> operator, so that a client can determine whether a specific membership exists and obtain its <tt>id</tt>.</t>
          <dl newline="true">
            <dt>To find all members of a group:</dt>
            <dd>
              <t>GET /scim/v2/GroupMemberships?filter=group.value eq "e9e30db"</t>
            </dd>
          </dl>
          <dl newline="true">
            <dt>To find all groups for a member:</dt>
            <dd>
              <t>GET /scim/v2/GroupMemberships?filter=member.value eq "2819c22"</t>
            </dd>
          </dl>
          <dl newline="true">
            <dt>To find a specific membership:</dt>
            <dd>
              <t>GET /scim/v2/GroupMemberships?filter=group.value eq "e9e30db" and member.value eq "2819c22"</t>
            </dd>
          </dl>
          <t>If a service provider supports more than one resource type as a group member, it <bcp14>MUST</bcp14> also support filtering on <tt>member.type</tt> using the <tt>eq</tt> operator, alone or combined with the filters above using <tt>and</tt>, so that clients can narrow queries to a specific member resource type without enumerating and filtering results client-side.</t>
          <dl newline="true">
            <dt>To find all User members of a group:</dt>
            <dd>
              <t>GET /scim/v2/GroupMemberships?filter=group.value eq "e9e30db" and member.type eq "User"</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="deleting-groupmembership-resources-delete">
        <name>Deleting GroupMembership 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>GroupMembership</tt> resource.</t>
        <ul spacing="normal">
          <li>
            <t>Request: <tt>DELETE /scim/v2/GroupMemberships/{id}</tt></t>
          </li>
          <li>
            <t>Response: <tt>204 No Content</tt> on successful deletion.</t>
          </li>
        </ul>
        <t>A client that does not know the <tt>id</tt> of the <tt>GroupMembership</tt> resource it wants to delete can obtain it with a query filtered on both <tt>group.value</tt> and <tt>member.value</tt> (see Filtering). Clients that create memberships with <tt>POST</tt> can avoid this lookup by retaining the <tt>id</tt> returned in the <tt>201 Created</tt> response. If the service provider supports modifying the <tt>members</tt> attribute of the <tt>Group</tt> resource, a client can instead remove the member with a <tt>PATCH</tt> request to the <tt>Group</tt>, using a <tt>remove</tt> operation whose <tt>path</tt> is <tt>members[value eq "[Member_ID]"]</tt>, as shown in <xref target="RFC7644"/> Section 3.5.2.2. This removes the membership without requiring the client to know the <tt>id</tt> of the <tt>GroupMembership</tt> resource.</t>
      </section>
      <section anchor="bulk-operations">
        <name>Bulk Operations</name>
        <t>Clients can create and delete multiple <tt>GroupMembership</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": "/GroupMemberships",
      "bulkId": "add-user-1",
      "data": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:GroupMembership"
        ],
        "group": { "value": "e9e30db" },
        "member": { "value": "aed987" }
      }
    },
    {
      "method": "POST",
      "path": "/GroupMemberships",
      "bulkId": "add-user-2",
      "data": {
        "schemas": [
          "urn:ietf:params:scim:schemas:core:2.0:GroupMembership"
        ],
        "group": { "value": "e9e30db" },
        "member": { "value": "bce5231" }
      }
    },
    {
      "method": "DELETE",
      "path": "/GroupMemberships/gm12345"
    }
  ]
}
]]></artwork>
      </section>
    </section>
    <section anchor="schema-representation">
      <name>Schema Representation</name>
      <section anchor="groupmembership-core-schema">
        <name>GroupMembership Core Schema</name>
        <t>The following is the formal SCIM schema definition for the <tt>GroupMembership</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:GroupMembership",
  "name": "Group Membership",
  "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": true,
          "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",
    "created": "2026-02-20T13:43:00Z",
    "lastModified": "2026-02-20T13:43:00Z",
    "location": "https://example.com/scim/v2/Schemas/ \
      urn:ietf:params:scim:schemas:core:2.0:GroupMembership"
  }
}
]]></artwork>
        <t>The <tt>referenceTypes</tt> values of <tt>member.$ref</tt> in the schema definition above are non-normative examples. A service provider <bcp14>MAY</bcp14> add or remove resource types to reflect the resource types it supports as members of a group.</t>
        <t>The <tt>value</tt> sub-attributes of <tt>group</tt> and <tt>member</tt> are defined with <tt>caseExact</tt> set to <tt>true</tt> because they contain resource <tt>id</tt> values, which <xref target="RFC7643"/> Section 3.1 defines as case-exact. This intentionally differs from the <tt>value</tt> sub-attribute of the <tt>members</tt> attribute in the <tt>Group</tt> schema defined in <xref target="RFC7643"/>, which is defined with <tt>caseExact</tt> set to <tt>false</tt>.</t>
      </section>
      <section anchor="groupmemberships-schema-extension">
        <name>groupMemberships Schema Extension</name>
        <t>This section contains the schema definition for the <tt>groupMemberships</tt> schema extension, described in the groupMemberships Group Schema Extension section.</t>
        <t><strong>Schema URN:</strong> <tt>urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group</tt></t>
        <section anchor="the-membersembedded-attribute-definition">
          <name>The <tt>membersEmbedded</tt> Attribute Definition</name>
          <t>The extension introduces a single boolean attribute to the <tt>Group</tt>
resource, <tt>membersEmbedded</tt>, defined below. 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:groupMemberships:2.0:Group",
  "name": "Group Memberships Extension",
  "description": "A schema extension for Group resources to \
    indicate whether all of a group's memberships are embedded \
    in the members attribute.",
  "attributes": [
    {
      "name": "membersEmbedded",
      "type": "boolean",
      "multiValued": false,
      "mutability": "readOnly",
      "returned": "default",
      "required": false,
      "description": "Indicates whether the full current \
        membership of this group is delivered in the members \
        attribute."
    }
  ],
  "meta": {
    "resourceType": "Schema",
    "location": "https://example.com/scim/v2/Schemas/ \
      urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group"
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations for the <tt>GroupMembership</tt> resource are substantially the same as those for the <tt>User</tt> and <tt>Group</tt> resources defined in Section 7 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>GroupMembership</tt> resources are the responsibility of the service provider. Implementers should consider the following:</t>
      <ul spacing="normal">
        <li>
          <t>A service provider <bcp14>MUST</bcp14> apply authorization to <tt>GET</tt> requests for <tt>GroupMembership</tt> resources, including requests filtered on <tt>group.value</tt> or <tt>member.value</tt>, that is equivalent to the authorization it applies to reading the <tt>members</tt> attribute of the corresponding <tt>Group</tt> resources. Access to a <tt>Group</tt> resource alone does not imply access to its member list, and access to a member resource (such as a <tt>User</tt>) alone does not imply access to that resource's group memberships; a service provider <bcp14>MAY</bcp14> expose group or member metadata broadly while restricting membership details to privileged clients. The membership relationship can be more sensitive than either the member or the group individually, regardless of the member's resource type.</t>
        </li>
        <li>
          <t>A service provider <bcp14>MUST NOT</bcp14> reveal, through error responses or through the <tt>totalResults</tt> value of a query response, the existence of <tt>Group</tt> resources, member resources, or <tt>GroupMembership</tt> resources that the requesting client is not authorized to read. A client authorized to add members to a group can learn from a <tt>409 Conflict</tt> response whether a member already belongs to that group; this is inherent in the operation and does not violate this requirement. When a client is not authorized to read a group or member referenced in a <tt>POST</tt> request, the service provider <bcp14>SHOULD</bcp14> return the same response it would return if the referenced resource did not exist.</t>
        </li>
        <li>
          <t>A service provider <bcp14>MUST</bcp14> apply authorization to <tt>POST</tt> and <tt>DELETE</tt> requests for a group's <tt>GroupMembership</tt> resources that is equivalent to the authorization it applies to adding or removing members of that <tt>Group</tt> through <tt>PATCH</tt>.</t>
        </li>
        <li>
          <t>Queries against <tt>/GroupMemberships</tt> without a filter or with a broad filter, and the work needed to populate the <tt>group.display</tt> and <tt>member.display</tt> sub-attributes, can be expensive at the scale this document targets, and can be used to degrade a service provider's availability. Service providers can mitigate this using per-page limits and the <tt>tooMany</tt> error defined in <xref target="RFC7644"/> Section 3.12.</t>
        </li>
      </ul>
    </section>
    <section anchor="schema-registration-templates">
      <name>Schema Registration Templates</name>
      <t>The following registration templates, as defined in Section 10.3.2 of <xref target="RFC7643"/>, describe the schema URIs registered by this document.</t>
      <section anchor="groupmembership-core-schema-registration">
        <name>GroupMembership Core Schema Registration</name>
        <dl newline="true">
          <dt>Schema URI:</dt>
          <dd>
            <t><tt>urn:ietf:params:scim:schemas:core:2.0:GroupMembership</tt></t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Schema Name:</dt>
          <dd>
            <t>Group Membership</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Intended or Associated Resource Type:</dt>
          <dd>
            <t>GroupMembership</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Purpose:</dt>
          <dd>
            <t>Represents a single membership of a member (a <tt>User</tt>, a <tt>Group</tt>, or another resource type) in a <tt>Group</tt> as a top-level resource, so that memberships can be paginated, filtered, created, and deleted individually.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Single-value Attributes:</dt>
          <dd>
            <t><tt>id</tt> (string); <tt>group</tt> (complex: <tt>value</tt>, <tt>$ref</tt>, <tt>display</tt>); <tt>member</tt> (complex: <tt>value</tt>, <tt>$ref</tt>, <tt>type</tt>, <tt>display</tt>); <tt>meta</tt> (complex).</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Multi-valued Attributes:</dt>
          <dd>
            <t>None, other than the common <tt>schemas</tt> attribute.</t>
          </dd>
        </dl>
      </section>
      <section anchor="groupmemberships-group-extension-registration">
        <name>groupMemberships Group Extension Registration</name>
        <dl newline="true">
          <dt>Schema URI:</dt>
          <dd>
            <t><tt>urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group</tt></t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Schema Name:</dt>
          <dd>
            <t>Group Memberships Extension</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Intended or Associated Resource Type:</dt>
          <dd>
            <t>Group</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Purpose:</dt>
          <dd>
            <t>Indicates whether all of a group's memberships are embedded in its <tt>members</tt> attribute.</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Single-value Attributes:</dt>
          <dd>
            <t><tt>membersEmbedded</tt> (boolean).</t>
          </dd>
        </dl>
        <dl newline="true">
          <dt>Multi-valued Attributes:</dt>
          <dd>
            <t>None.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests that IANA register the following schema URIs in the "SCIM Schema URIs for Data Resources" registry, within the "System for Cross-domain Identity Management (SCIM) Schema URIs" registry group established by <xref target="RFC7643"/>. The registration templates for both are provided in the Schema Registration Templates section.</t>
      <dl newline="true">
        <dt>Schema URI:</dt>
        <dd>
          <t><tt>urn:ietf:params:scim:schemas:core:2.0:GroupMembership</tt></t>
        </dd>
      </dl>
      <dl newline="true">
        <dt>Name:</dt>
        <dd>
          <t>Group Membership</t>
        </dd>
      </dl>
      <dl newline="true">
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
      </dl>
      <dl newline="true">
        <dt>Schema URI:</dt>
        <dd>
          <t><tt>urn:ietf:params:scim:schemas:extension:groupMemberships:2.0:Group</tt></t>
        </dd>
      </dl>
      <dl newline="true">
        <dt>Name:</dt>
        <dd>
          <t>Group Memberships Extension</t>
        </dd>
      </dl>
      <dl newline="true">
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Matthias Winter, Hans-Joerg Happel, and Paul Lanzi for their detailed reviews and suggestions on the SCIM mailing list and in the draft's repository.</t>
    </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:
H4sIAAAAAAAAA+096XIbx5n/8RS9yFYsqQCIpChZguN4aYmO6dIVkY438aqC
BqYBTDSYgWcGpGCX8yz7LPtk+119DQYASVnOZiuVigzO0cfX331Nv9/v1Gmd
maE6f3r2Qv2hLFZL9cIsxqas5ulSvTFVsSonRl2sl0advq9NXqVF3tHjcWku
973VSYpJrhcwelLqad3/sciy3JT9apIu+jN8q79wb/UPDjoTXZtZUa6HqqqT
TiddlkNVl6uqPjo4eHJw1NGl0UN1slxmKTwKC6mUzhOYT2f9i3RhOldF+Y4G
5qV13pk1XEqG6vuzvDZlbur+M1xKj26/7XSqGgb4q86KHFa5NlWnWuiy/usP
q6I21VDlRWeZwtt1Mempqijr0kwr+LVe4A94v9PRq3pelMOOUn34v1K84Wc6
z9fqL7xhul6UM52nP9Kyh+rVu1rTZbPQaQYAwucHAqD/KODuYFIsOp28KBfw
yqXBCd589fTTR8fH/ucD+fnk8aOHw04fThP/UXpc1aWe1J3OxTytFJzCamHy
Whk8v6RS9dyo83VVm4WaFqV6WhZV1U8KWEmuzhJ4Mq3X6oXO9czQe3cQWHfV
0eBAEbx0majxWiVmmuZpPlNa5eZKdQkPPBp0VV0s+5m5NJkqBSMG6ts8MSWt
wLxPqxpfXxQJPEKjmUTBGmBHCnfXU3SWyiMJnHdpYLQlDAgrg8d1pS51tjIV
vqjVYpXVaZ+uwL26LtPxqjbqKq3ndJ9x1S+HAKTLyTytzaReweCZnryr4BQR
6KpaLZdw6gSmypSXiLxpYtRSz9KcjrKnpmkGqAUb6Sl8Ch7HTRVTWFCSXqbJ
Smd2BwN1lsNGl1mxRsBWaoFAxsczXc4MEIbODG+6UnfMYDboqcODg97BwQEA
Ux3iD/pDxsMJF0Vp7vZgS7BXc8nHEe8SfwBYCEILXVW4sa8vLl7j9SXQEG5n
nRWaMEPXaqJzOJyJAQjC5C++xPeq9EcLLbydGZ3gihAmKcxQA/EVqxpIA1YG
BAzvzzXQLQEISRQoD2kThgIMGqcZYBjfmMMBZoYGA2Cs4Z+/waaIr6SLZUYI
KKQ+mRdFhRuEZ/OidocDW1+VhIiIVnT2CH78oyuA6ga4gGcZA6iSnRnL32CZ
dVkkK7gF0Jxm8LJB3HQQZZQlaJlcjzN4bhNVYZljeG2aAv6UxSJAGtp5AQuU
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
XpAAAA==

-->

</rfc>
