Return-Path: <prvs=34967acb43=danny.zollner@okta.com>
X-Original-To: scim@mail2.ietf.org
Delivered-To: scim@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1])
	by mail2.ietf.org (Postfix) with ESMTP id C9C35B2168AB
	for <scim@mail2.ietf.org>; Wed,  4 Feb 2026 19:32:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.695
X-Spam-Level: 
X-Spam-Status: No, score=-2.695 tagged_above=-999 required=5
	tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
	DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001,
	HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_LOW=-0.7,
	RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,
	RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001,
	SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key)
	header.d=spera.security header.b="k+xaHv6k"; dkim=pass (2048-bit key)
	header.d=okta.com header.b="JfSGHHX7"; dkim=pass (1024-bit key)
	header.d=okta.com header.b="Y/NrlCm5"
Received: from mail2.ietf.org ([166.84.6.31])
	by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id h0N53wQBoVFV for <scim@mail2.ietf.org>;
	Wed,  4 Feb 2026 19:32:33 -0800 (PST)
Received: from mx0b-00553301.pphosted.com (mx0b-00553301.pphosted.com
 [205.220.176.21])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256)
	(No client certificate requested)
	by mail2.ietf.org (Postfix) with ESMTPS id DA1FFB2168A1
	for <scim@ietf.org>; Wed,  4 Feb 2026 19:32:32 -0800 (PST)
Received: from pps.filterd (m0209339.ppops.net [127.0.0.1])
	by mx0b-00553301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 61511KFS4150028
	for <scim@ietf.org>; Wed, 4 Feb 2026 19:32:24 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spera.security;
	 h=cc:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=proofpoint-2020; bh=6fXinX/huL8xbDZJXv
	+z5D2YBP2gZGxR5AKBxeGZ3xE=; b=k+xaHv6k46nkQUqQSIvniraMLirPlyhpSH
	RHE5npR8Bf6kSAtT3OH8qUa7oOWnppvh4ZapvwOtm3O7rhjdtkxLg/cxS5ElE8zR
	GZ+Q7Ga9WPO22/PjVBrj0GPIgTokYS9MEI2tPPXA5AzSJg7EDVtGLBABsG6J3IcS
	HZHI6AO1+eZCxJBzKa4DKGb5JO/qYnwDc/OzhEOdOZVhCjqd6pP/IGmvAj9COrPK
	inm36Cd26xRSBRkgIg7szVizwrGMgGO8EJlEbme5f57ae4jfyMPcPXO57L2Wt1l9
	pOfJItCmnnJIQdlAFYQPnuYBWD/vgM9N57xF02SrVL9qarRrUs1w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okta.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=proofpoint-2020; bh=6fXinX/huL8xbDZJXv
	+z5D2YBP2gZGxR5AKBxeGZ3xE=; b=JfSGHHX7TeMQIFKJc9IVJvGiEL5UZhgXye
	UJ1c3qWjGI0lZ488I/gvQUjLIQLtWnujdc/Sx9mJi3nT766Rzl3ZIr8bDO9zWRV6
	FgNHNcAMDpGvdQDNgEMtGzbI9vtD6LJqMN20vXOoRSYYPieUOAfrM1jIWJmym7iV
	0V6KjbiStlwCU3sivR7ppfnsHboYADLA/rTJ+qjRu2JMv85CWuVjnd55wT6fK8xU
	2JiZGV0fikBd16MWdJ1aHQ7l/2N8uTp2unAkAIvjyEhZp225BVI6Vvhi8HLg+Xof
	8zE+beImRV+AKJqpo1m43HXgVihyzY9WepP8nm176bebpyxjw75w==
Received: from mail-dy1-f199.google.com (mail-dy1-f199.google.com
 [74.125.82.199])
	by mx0b-00553301.pphosted.com (PPS) with ESMTPS id 4c3p2km362-1
	(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
	for <scim@ietf.org>; Wed, 04 Feb 2026 19:32:24 -0800 (PST)
Received: by mail-dy1-f199.google.com with SMTP id
 5a478bee46e88-2b72b6fc371so2570753eec.0
        for <scim@ietf.org>; Wed, 04 Feb 2026 19:32:23 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770262343; cv=none;
        d=google.com; s=arc-20240605;
        b=Ckry64YUXpiuIMJ3cZOtMcWFNWKU9JNy6zKTbMQ6NGxSIq4M+bm0kTiJ3ozMwTF0KZ
         qP5pxoz+8uvdw8z+pxN5I88frZzAtp/YNff0WxyqhcOmAeyvp0Mv+J1EyZiBHDeQ/ZkP
         YQ4x/wPggrZU0tZz3iNMe+5RV+TMRklTWYWk0eddwFupnJrYvbwUi9Nnt7R06RZiyLzi
         kQGxsjetA2NUlq51xcc8aSyc6cL7aWmx2+VvemS07kodpY3XoeyTgig8HySqMx7DO0Hq
         g7fb9AB1oFdIanRVzaUCYyfo0A5S1n8oYpeL2hwHTWvecGsdDFvBsMukQeEW1Tyg04pB
         H2TQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
 s=arc-20240605;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:dkim-signature;
        bh=6fXinX/huL8xbDZJXv+z5D2YBP2gZGxR5AKBxeGZ3xE=;
        fh=fe71JzUALM1+2nYC2b0Nay+IKLrCFCJp5jVKNuh+Udk=;
        b=QVB9fwWRVxqSx/PBX2KXHq8AEe00JFHUMfpxxUL7iIsRxY7XGxUXcDwRAwFUuX+7kx
         gJ4ZPVCDyXbNJ5/aaJ3A8xbP3keM+QsCkP1bax/Lu5kHA73a4JnIwUeoNQXlOuVY7E3D
         F7h1/8tfldvvhvLCiQSQF7TGcCEDNLGKVXcoYdz+y0GjBD2jksXDwPhiollex1OoZT6T
         r3UcvcI6/8SpdM4cdhAMipxQlKJypALXekeKNVM8oe8H2O2cO5qn8JwB5sB1VdzFwPpC
         QfhRysBSLu1FesDZOZZi7qZu6CoryIroVEdsD1mnvym5RlYJI+FXszrpNqyreOsX5PaE
         pQeg==;
        darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=okta.com; s=gap; t=1770262343; x=1770867143; darn=ietf.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=6fXinX/huL8xbDZJXv+z5D2YBP2gZGxR5AKBxeGZ3xE=;
        b=Y/NrlCm5VYPtaiEm8qDKicohSXR3QcIoGtgNHM2ZioKigny9QbAOTVYPAK3hJCcKcA
         yQf2GtVIiAxsAyFPcycicWq9QOKlUgYurSqsMqXPHgw34oVBTtiJIiL88PryVvCKXbPj
         VpZlCkdRHWvFlgv2ei6+9uNrKu0zaczOMV8Sc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1770262343; x=1770867143;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6fXinX/huL8xbDZJXv+z5D2YBP2gZGxR5AKBxeGZ3xE=;
        b=tj+6s7nwf9gUpU80P+0yU8FiExCUF69p0C2zHA1xfQCesWTU3E86AuMl9FZNEj9PY3
         gip/k0MZfF1eGjT6ON+1MaRn4I+ImQOiklihNjW+TNQXbm6bfVZKi21nGYHq0ZdOWEZ5
         Ot2j1NSepV0u779Ut0uJVvQRrTT0u71yv4e8A1ZRaVtwYcar3uH7vw/rwfcwBzSvbFIj
         Cd/j+TZTdjdyrXFPS5TrhUzxLvQPVkO+j41NqpUnvYxVt02Ldx/tgPLxyJBjtYbevgjh
         rd1nAdOAws0hGG8Sxnom299z4hYJiyJde3H09g41zX4XsLaMnGrJwL8rOVnXWOSc7JU5
         ZwqQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCXFAWiyeUQ79pRNdXRlaFCS6XJLsab4dqZKvrpsdW/JilWV63/jp98udRyuzi9z1mCxg57e@ietf.org
X-Gm-Message-State: AOJu0YyxZ5eJjbYeiRX36ONx08oIIrSBSfT2VoXGB9IU4A/WQCJvGEI8
	awZHU7NHvI8OgHot+pajjw7T35BcJyWKlgzyRmUxTK0RLyKK8GngjtHuVAbK7xMPcovlLw52eDf
	ZmjIwC5jj9xRXkhwFN5dwq0Xu2+fBHjxiI6mdF07UMQl5qmAcr8mrTAqvcXmpB2CU9Q9EUlVaJ9
	lv+v1cngZPkkcZmmv6Bhs=
X-Gm-Gg: AZuq6aLtaQYmM62JsgXzw6UDP0U6oyICR/6bWFWrWEVrbTQJ4eLrN6piOav1oCTo3ZQ
	8NebNr3O3aadSuD/eem4maZrOFWhoFS9+LizThJeGNIuvgUxutrjH3edz8ykNwqgSaZOZz/ompS
	9H9aiTA2mw0TgCNM4MnVdqi+RV3QXZl2RunDNdRVBgazWrfTswEac1XfYBOWVegs+V
X-Received: by 2002:a05:7300:534f:b0:2b7:145d:eb66 with SMTP id
 5a478bee46e88-2b83299fdabmr2596848eec.24.1770262342873;
        Wed, 04 Feb 2026 19:32:22 -0800 (PST)
X-Received: by 2002:a05:7300:534f:b0:2b7:145d:eb66 with SMTP id
 5a478bee46e88-2b83299fdabmr2596825eec.24.1770262342249; Wed, 04 Feb 2026
 19:32:22 -0800 (PST)
MIME-Version: 1.0
References: 
 <CAOoRr-OUq26BPbNM7EqyEgSUzDaNPuN-XyyAU+kQr9sZ-1u01A@mail.gmail.com>
 <BCA320D4-9E1D-4944-B2F7-26BE3B13B687@independentid.com>
In-Reply-To: <BCA320D4-9E1D-4944-B2F7-26BE3B13B687@independentid.com>
From: Danny Zollner <danny.zollner@okta.com>
Date: Wed, 4 Feb 2026 21:32:10 -0600
X-Gm-Features: AZwV_Qj4g3AZscJXlqoK45hjOsOKot8otwIJyOdCZ_OhjlSUlTIGKUBclJT9vg8
Message-ID: 
 <CADzbaOoQAFT0xsPeC38dpyMi1houBcb1WGR-Wii=mK7vDX42EQ@mail.gmail.com>
To: Phillip Hunt <phil.hunt@independentid.com>
Content-Type: multipart/related; boundary="00000000000012a10e064a0b521c"
X-Gmail-Okta-Auth: Authenticated
X-Gm-Spam: 0
X-Gm-Phishy: 0
X-Authority-Analysis: v=2.4 cv=LumfC3dc c=1 sm=1 tr=0 ts=69840f48 cx=c_pps
 a=cFYjgdjTJScbgFmBucgdfQ==:117 a=HzLeVaNsDn8A:10 a=Bdx-TKn-h1YA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=48vgC7mUAAAA:8 a=IqETP1_tAAAA:8 a=pGLkceISAAAA:8
 a=XyJVEfRiF3fUlVI1RlsA:9 a=QEXdDO2ut3YA:10 a=xBXxo-bjWDnaS2pKKrYA:9
 a=zY27L3GK4gL7R8eD:21 a=lqcHg5cX4UMA:10 a=HXjIzolwW10A:10 a=T6a71-JsGAwA:10
 a=scEy_gLbYbu1JhEsrz4S:22 a=84G_OkgMc8xwACs048Fv:22
X-Proofpoint-GUID: XsB6di_I054OMQxkLDSO_blzOVopoffV
X-Proofpoint-ORIG-GUID: XsB6di_I054OMQxkLDSO_blzOVopoffV
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA1MDAyMSBTYWx0ZWRfX+naICMMwWM0J
 jWeEGjDze5y6QZwTUd1xXX2DbLgs7ezIOyGpJKvwKxkKQmWqjk2R9UfRHpHjQvStbu5OYSaZfhm
 VEjGvk9Y0EqEHM4RVInxcVhHxrfrZ7APTpUPOIWtM3azyjVv1Z1/IsABCNqlO4ZkAyvoAKJQE2o
 GnTbYv4hjEOMPT9SvhotRA6MzXHY4OsvT0AoHWshtlF9n6584q0xELt2A2Xad1x3ngbkXYsTCdM
 m1tqnyLLTrHUPqJm0cpLPrTLaYh+gLFQALEz7DThjFtm0FnEmcZzgjGWp1Nm7eqB1DS113bl3l+
 GceWgUL1lfXuGwKWm//HSYoi8WmNJSdEtMZlIastcDYgFoCICTwL9yAyAbqkR9P4IwnLVULFfWz
 fmg2Wp+HF8gmvUTN1ZkV6gcMmcQAHNCql73BfWlf+io4SGBt043S6OUw3y24thZDGQM28EtJGEx
 WCO9pD3uN/q/fnZ2Iyw==
X-Proofpoint-Virus-Version: 
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 clxscore=1011 impostorscore=0 priorityscore=1501 adultscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 spamscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602050021
Message-ID-Hash: KECRMT2ZU6YD4637EZ54LY346JX4ITIZ
X-Message-ID-Hash: KECRMT2ZU6YD4637EZ54LY346JX4ITIZ
X-MailFrom: prvs=34967acb43=danny.zollner@okta.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency;
 loop; banned-address; member-moderation; header-match-scim.ietf.org-0;
 nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size;
 news-moderation; no-subject; digests; suspicious-header
CC: Daniel Cormier <daniel.cormier+ietf@gmail.com>, scim@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: =?utf-8?q?=5Bscim=5D_Re=3A_Pagination_Support_for_Multi-Valued_Attributes_in?=
	=?utf-8?q?_SCIM_2=2E0?=
List-Id: Simple Cloud Identity Management BOF <scim.ietf.org>
Archived-At: 
 <https://mailarchive.ietf.org/arch/msg/scim/beAvJMzTdDCzZfv6jgj4U8qMjPA>
List-Archive: <https://mailarchive.ietf.org/arch/browse/scim>
List-Help: <mailto:scim-request@ietf.org?subject=help>
List-Owner: <mailto:scim-owner@ietf.org>
List-Post: <mailto:scim@ietf.org>
List-Subscribe: <mailto:scim-join@ietf.org>
List-Unsubscribe: <mailto:scim-leave@ietf.org>

--00000000000012a10e064a0b521c
Content-Type: multipart/alternative; boundary="00000000000012a10d064a0b521b"

--00000000000012a10d064a0b521b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I've had various conversations about this over the last few years and
representing the multi-valued attribute as a (sub)resource has always ended
up looking like a cleaner option than the SCIM query/filter-based methods
described in draft-hunt-scim-mv-filtering-00 and in the recent email to
this mailing list by Saurabh. Going deeper on the multi-valued attribute as
a (sub)resource approach, there are a few different ideas that have come to
mind:


   1. A draft to explicitly address group memberships, as that's the
   primary real world scenario I've seen where SCIM resource sizes become t=
oo
   large to manage. I've seen some other APIs represent group memberships a=
s
   their own resource (e.g.: /GroupMembers) and I think that has value in S=
CIM
   as well when thinking about things like delta query/change detection. I
   think /Groups/<id>/members is useful too and can exist alongside
   /GroupMembers without issue.

   2. A draft to explicitly address existing attributes defined in the SCIM
   specifications - the members attribute on groups, but also potentially
   roles, entitlements, the "groups" attribute on users (and other
   resources?), etc.

   3. A draft to define an extensible approach to representing a
   multi-valued attribute as a sub-resource endpoint (e.g.:
   /Users/<id>/entitlements, or /Users/<id>/<customAttributeURN>


Separate from the sub-resource approach, a few other ideas that have come
up in my discussions:


   - Define a way to paginate a SCIM resource that treats the JSON object
   representing the SCIM resource as the thing to be paginated, rather than
   the list of values in an array for a specific multi-valued attribute. Th=
is
   has the benefit of helping with pagination on a resource with several
   multi-valued attributes that each require pagination, and with
   single-valued attributes that have large values.

   - Utilize an existing feature in HTTP (or another standard). I'm not an
   expert on HTTP, but Chunked Transfer Encoding stood out when I was looki=
ng
   into this.


I lean towards option #1 or #3 from the list of subresource representation
variations.

Thanks,

Danny



On Thu, Jan 29, 2026 at 11:58=E2=80=AFAM Phillip Hunt <phil.hunt@independen=
tid.com>
wrote:

> *This message originated outside your organization.*
>
> ------------------------------
>
> There was a mult-value paging extension draft submitted back in 2019.
>
> SCIM Protocol: Multi-Value Paging Extension
> <https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-hunt-=
scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nC=
K8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$>
> datatracker.ietf.org
> <https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-hunt-=
scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nC=
K8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$>
> [image: ietf-logo-nor-180.png]
> <https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-hunt-=
scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nC=
K8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$>
> <https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-hunt-=
scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nC=
K8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$>
>
> This was basically adding paging features to the filter query so that
> queries like the following become possible:
>
> In the following example, all Groups are searched and only Groups
>    whose name starts with "Group" are selected.  Additionally, the
>    members attribute values are filtered return only member values with
>    "type" equal to "groups" (as in sub-groups) returning only the first
>    5 values using the attributes paging qualifying parameters.
> GET /v2/Groups?filter=3DdisplayName sw 'Group'&attributes=3D*,members[typ=
e
>       eq \"Group\"&count=3D5&startIndex=3D1]
>
>
> The draft had the advantage of being backwards compatible and was
> relatively stateless.
>
> One note, it=E2=80=99s not clear, but the first example in the draft of r=
etrieving
> only work emails is to show existing core
> SCIM functionality.  The following example show how the extension of
> adding paging values, allows a client to
> ask for sub-sets of items.
>
> I think it was lost in the Covid shutdown that happened after.
>
> Cheers,
>
> Phil Hunt
> phil.hunt@independentid.com
>
>
>
>
>
>
> On Jan 29, 2026, at 6:32=E2=80=AFAM, Daniel Cormier <daniel.cormier+ietf@=
gmail.com>
> wrote:
>
> We've had the same problem getting groups with many members (some with
>
> 100k). For what it's worth, since it is an internal implementation,
>
> we added a new endpoint: GET /Groups/{id}/members. Our flow was to
> retrieve the group (GET /Groups/{id}) with its members excluded, then
> paginate through GET /Group/{id}/members separately. It worked well
> for our case.
>
> Some previous discussion around group member pagination:
>
> * <https://mailarchive.ietf.org/arch/msg/scim/YCcs_ZRWOo4HM8zxKbXlAi2Cpag=
/
> <https://urldefense.com/v3/__https://mailarchive.ietf.org/arch/msg/scim/Y=
Ccs_ZRWOo4HM8zxKbXlAi2Cpag/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl=
7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6FvmOQQI$>
> >
> <-- Mentions the same solution we used
>  * <
> https://mailarchive.ietf.org/arch/msg/scim/67Bd0iotMoEx5rcjCUsHUzQzQGU/
> <https://urldefense.com/v3/__https://mailarchive.ietf.org/arch/msg/scim/6=
7Bd0iotMoEx5rcjCUsHUzQzQGU/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl=
7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6CDlxIfw$>
> >
> * <https://mailarchive.ietf.org/arch/msg/scim/txBFAJgcxb0mhIi1Bp0jaL6t2WU=
/
> <https://urldefense.com/v3/__https://mailarchive.ietf.org/arch/msg/scim/t=
xBFAJgcxb0mhIi1Bp0jaL6t2WU/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl=
7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc61biKnDQ$>
> >
>
> _______________________________________________
> scim mailing list -- scim@ietf.org
> To unsubscribe send an email to scim-leave@ietf.org
>
>
> _______________________________________________
> scim mailing list -- scim@ietf.org
> To unsubscribe send an email to scim-leave@ietf.org
>

--00000000000012a10d064a0b521b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;ve had various conversations about this over the las=
t few years and representing the multi-valued attribute as a (sub)resource =
has always ended up looking like a cleaner option than the SCIM query/filte=
r-based methods described in draft-hunt-scim-mv-filtering-00 and in the rec=
ent email to this mailing list by Saurabh. Going deeper on the multi-valued=
 attribute as a (sub)resource approach, there are a few different ideas tha=
t have come to mind:<br><br><ol><li>A draft to explicitly address group mem=
berships, as that&#39;s the primary real world scenario I&#39;ve seen where=
 SCIM resource sizes become too large to manage. I&#39;ve seen some other A=
PIs represent group memberships as their own resource (e.g.: /GroupMembers)=
 and I think that has value in SCIM as well when thinking about things like=
 delta query/change detection. I think /Groups/&lt;id&gt;/members is useful=
 too and can exist alongside /GroupMembers without issue.<br><br></li><li>A=
 draft to explicitly address existing attributes defined in the SCIM specif=
ications - the members attribute on groups, but also potentially roles, ent=
itlements, the &quot;groups&quot; attribute on users (and other resources?)=
, etc.<br><br></li><li>A draft to define an extensible approach to represen=
ting a multi-valued attribute as a sub-resource endpoint (e.g.: /Users/&lt;=
id&gt;/entitlements, or /Users/&lt;id&gt;/&lt;customAttributeURN&gt;<br></l=
i></ol><div><br></div><div>Separate from the sub-resource approach, a few o=
ther ideas that have come up in my discussions:</div><div><br></div><div><u=
l><li>Define a way to paginate a SCIM resource that treats the JSON object =
representing the SCIM resource as the thing to be paginated, rather than th=
e list of values in an array for a specific multi-valued attribute. This ha=
s the benefit of helping with pagination on a resource with several multi-v=
alued attributes that each require pagination, and with single-valued attri=
butes that have large values.=C2=A0<br><br></li><li>Utilize an existing fea=
ture in HTTP (or another standard). I&#39;m not an expert on HTTP, but Chun=
ked Transfer Encoding stood out when I was looking into this.=C2=A0</li></u=
l></div><div><div><br></div></div><div>I lean towards option #1 or #3 from =
the list of subresource representation variations.=C2=A0</div><div><br></di=
v><div>Thanks,</div><div><br></div><div>Danny</div><div><br></div><div><br>=
</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_=
attr">On Thu, Jan 29, 2026 at 11:58=E2=80=AFAM Phillip Hunt &lt;<a href=3D"=
mailto:phil.hunt@independentid.com" target=3D"_blank">phil.hunt@independent=
id.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div>
<div>
<p><strong>This message originated outside your organization.</strong></p><=
br>
  <hr><br>
</div>There was a mult-value paging extension draft submitted back in 2019.=
<div><br></div><div><div style=3D"display:block"><div style=3D"display:inli=
ne-block" role=3D"link"><a style=3D"border-radius:10px;font-family:-apple-s=
ystem,Helvetica,Arial,sans-serif;display:block;width:300px;overflow:hidden;=
text-decoration:none" rel=3D"nofollow" href=3D"https://urldefense.com/v3/__=
https://datatracker.ietf.org/doc/draft-hunt-scim-mv-paging/__;!!PwKahg!-QXA=
_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_=
dJMc6-0k6p4g$" dir=3D"ltr" role=3D"button" width=3D"300" target=3D"_blank">=
<table style=3D"table-layout:fixed;border-collapse:collapse;width:300px;bac=
kground-color:rgb(230,230,230);font-family:-apple-system,Helvetica,Arial,sa=
ns-serif" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" width=3D"300"><t=
body><tr><td><table bgcolor=3D"#E6E6E6" cellpadding=3D"0" cellspacing=3D"0"=
 width=3D"300" style=3D"table-layout:fixed;font-family:-apple-system,Helvet=
ica,Arial,sans-serif;background-color:rgb(230,230,230)"><tbody><tr><td styl=
e=3D"padding:8px 0px"><div style=3D"max-width:100%;margin:0px 16px;overflow=
:hidden"><div style=3D"font-weight:500;font-size:12px;overflow:hidden;text-=
overflow:ellipsis;text-align:left"><a rel=3D"nofollow" href=3D"https://urld=
efense.com/v3/__https://datatracker.ietf.org/doc/draft-hunt-scim-mv-paging/=
__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nCK8PiBBe0aaQTePX=
72wIdSK3Dlv7VJL_dJMc6-0k6p4g$" style=3D"text-decoration:none" target=3D"_bl=
ank"><font color=3D"#272727" style=3D"color:rgba(0,0,0,0.847)">SCIM Protoco=
l: Multi-Value Paging Extension</font></a></div><div style=3D"font-weight:4=
00;font-size:11px;overflow:hidden;text-overflow:ellipsis;text-align:left"><=
a rel=3D"nofollow" href=3D"https://urldefense.com/v3/__https://datatracker.=
ietf.org/doc/draft-hunt-scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk=
4mH7F0m5NQfl7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$" style=
=3D"text-decoration:none" target=3D"_blank"><font color=3D"#808080" style=
=3D"color:rgba(0,0,0,0.498)">datatracker.ietf.org</font></a></div></div></t=
d><td style=3D"padding:6px 12px 6px 0px" width=3D"30"><a rel=3D"nofollow" h=
ref=3D"https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-h=
unt-scim-mv-paging/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1C=
m1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6-0k6p4g$" target=3D"_blank"><img st=
yle=3D"display: inline-block; width: 30px; height: 30px; border-radius: 3px=
;" width=3D"30" height=3D"30" alt=3D"ietf-logo-nor-180.png" src=3D"cid:ii_1=
9c2b647e97b54048e51"></a></td></tr></tbody></table></td></tr></tbody></tabl=
e></a></div></div><div><br></div>This was basically adding paging features =
to the filter query so that queries like the following become possible:</di=
v><div><div><br></div><div><div></div></div><blockquote type=3D"cite"><div>=
<div>In the following example, all Groups are searched and only Groups</div=
><div>=C2=A0 =C2=A0whose name starts with &quot;Group&quot; are selected.=
=C2=A0 Additionally, the</div><div>=C2=A0 =C2=A0members attribute values ar=
e filtered return only member values with</div><div>=C2=A0 =C2=A0&quot;type=
&quot; equal to &quot;groups&quot; (as in sub-groups) returning only the fi=
rst</div><div>=C2=A0 =C2=A05 values using the attributes paging qualifying =
parameters.</div></div><div>GET /v2/Groups?filter=3DdisplayName sw &#39;Gro=
up&#39;&amp;attributes=3D*,members[type</div><div>=C2=A0 =C2=A0 =C2=A0 eq \=
&quot;Group\&quot;&amp;count=3D5&amp;startIndex=3D1]</div></blockquote><div=
>
<div dir=3D"auto" style=3D"color:rgb(0,0,0);letter-spacing:normal;text-alig=
n:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing=
:0px;text-decoration:none"><div dir=3D"auto" style=3D"color:rgb(0,0,0);lett=
er-spacing:normal;text-align:start;text-indent:0px;text-transform:none;whit=
e-space:normal;word-spacing:0px;text-decoration:none"><div dir=3D"auto" sty=
le=3D"color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0=
px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:=
none"><div><br></div><div>The draft had the advantage of being backwards co=
mpatible and was relatively stateless.</div><div><br></div><div>One note, i=
t=E2=80=99s not clear, but the first example in the draft of retrieving onl=
y work emails is to show existing core</div><div>SCIM functionality.=C2=A0 =
The following example show how the extension of adding paging values, allow=
s a client to</div><div>ask for sub-sets of items.</div><div><br></div><div=
>I think it was lost in the Covid shutdown that happened after.</div><div><=
br></div><div>Cheers,</div><div><br></div><div>Phil Hunt</div><div><a href=
=3D"mailto:phil.hunt@independentid.com" target=3D"_blank">phil.hunt@indepen=
dentid.com</a></div><div><br></div></div><br></div><br></div><br><br>
</div>
<div><br><blockquote type=3D"cite"><div>On Jan 29, 2026, at 6:32=E2=80=AFAM=
, Daniel Cormier &lt;<a href=3D"mailto:daniel.cormier%2Bietf@gmail.com" tar=
get=3D"_blank">daniel.cormier+ietf@gmail.com</a>&gt; wrote:</div><br><div><=
div>We&#39;ve had the same problem getting groups with many members (some w=
ith<br><blockquote type=3D"cite">100k). For what it&#39;s worth, since it i=
s an internal implementation,<br></blockquote>we added a new endpoint: GET =
/Groups/{id}/members. Our flow was to<br>retrieve the group (GET /Groups/{i=
d}) with its members excluded, then<br>paginate through GET /Group/{id}/mem=
bers separately. It worked well<br>for our case.<br><br>Some previous discu=
ssion around group member pagination:<br><br>* &lt;<a href=3D"https://urlde=
fense.com/v3/__https://mailarchive.ietf.org/arch/msg/scim/YCcs_ZRWOo4HM8zxK=
bXlAi2Cpag/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nCK8Pi=
BBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6FvmOQQI$" target=3D"_blank">https://mailarc=
hive.ietf.org/arch/msg/scim/YCcs_ZRWOo4HM8zxKbXlAi2Cpag/</a>&gt;<br>&lt;-- =
Mentions the same solution we used<br> =C2=A0* &lt;<a href=3D"https://urlde=
fense.com/v3/__https://mailarchive.ietf.org/arch/msg/scim/67Bd0iotMoEx5rcjC=
UsHUzQzQGU/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F0m5NQfl7nBcUg1Cm1nCK8Pi=
BBe0aaQTePX72wIdSK3Dlv7VJL_dJMc6CDlxIfw$" target=3D"_blank">https://mailarc=
hive.ietf.org/arch/msg/scim/67Bd0iotMoEx5rcjCUsHUzQzQGU/</a>&gt;<br>* &lt;<=
a href=3D"https://urldefense.com/v3/__https://mailarchive.ietf.org/arch/msg=
/scim/txBFAJgcxb0mhIi1Bp0jaL6t2WU/__;!!PwKahg!-QXA_7ekr2W3bWqtyUF8mHPk4mH7F=
0m5NQfl7nBcUg1Cm1nCK8PiBBe0aaQTePX72wIdSK3Dlv7VJL_dJMc61biKnDQ$" target=3D"=
_blank">https://mailarchive.ietf.org/arch/msg/scim/txBFAJgcxb0mhIi1Bp0jaL6t=
2WU/</a>&gt;<br><br>_______________________________________________<br>scim=
 mailing list -- <a href=3D"mailto:scim@ietf.org" target=3D"_blank">scim@ie=
tf.org</a><br>To unsubscribe send an email to <a href=3D"mailto:scim-leave@=
ietf.org" target=3D"_blank">scim-leave@ietf.org</a><br></div></div></blockq=
uote></div><br></div></div>
_______________________________________________<br>
scim mailing list -- <a href=3D"mailto:scim@ietf.org" target=3D"_blank">sci=
m@ietf.org</a><br>
To unsubscribe send an email to <a href=3D"mailto:scim-leave@ietf.org" targ=
et=3D"_blank">scim-leave@ietf.org</a><br>
</blockquote></div>

--00000000000012a10d064a0b521b--

--00000000000012a10e064a0b521c
Content-Type: image/png; name="ietf-logo-nor-180.png"
Content-Disposition: inline; filename="ietf-logo-nor-180.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_19c2b647e97b54048e51>
X-Attachment-Id: ii_19c2b647e97b54048e51

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
--00000000000012a10e064a0b521c--

