IndividualsFilterInput
Filter criteria used when querying for Individuals
input IndividualsFilterInput {
benefitIds: [ID!]
benefitsProgramIds: [ID!]
externalUserIds: [ID!]
ids: [ID!]
organizationIds: [ID!]
platformIds: [ID!]
statuses: [AccountEnrollmentStatus!]
}
Fields
IndividualsFilterInput.benefitIds ● [ID!] list scalar
If specified, only returns Individuals who are enrolled in these Benefits
IndividualsFilterInput.benefitsProgramIds ● [ID!] list scalar
If specified, only returns Individuals who are enrolled in these Benefits Programs
IndividualsFilterInput.externalUserIds ● [ID!] list scalar
If specified, only returns Individuals who hold one of these values as an external identifier.
Without platformIds, the values are matched against the external user ID on the Individual's
organization memberships — the member identifier supplied through
createOrUpdateOrganizationMembership. With platformIds, they are matched against the
identifiers recorded for those external platforms instead, and membership external user IDs are
not searched at all; see platformIds for how that lookup differs.
In both cases an explicitly empty list matches no Individuals (it is not treated as "no filter"),
a maximum of 100 values may be supplied (more than that is rejected as a top-level GraphQL error
with extension code BAD_USER_INPUT, not as the BadRequestError member of this query's result
union), and Individuals without a resolvable first and last name are never returned by this
query, so an Individual whose profile never captured a name will not be found by an external
identifier. The rest of this description covers the membership lookup.
Matching ignores case, whitespace and punctuation, so values differing only in those respects are
treated as the same identifier (AB-123-456 and ab123456 match the same Individual). A value
consisting only of punctuation or whitespace matches no Individuals. A value that is already a
64-character lowercase hexadecimal string is looked up as sent and, unlike other values, matched
case-sensitively: a member identifier supplied to createOrUpdateOrganizationMembership in that
form is found by that same string.
A membership matches regardless of employment status: an Individual whose membership has been
terminated is still returned, so that looking up an identifier you hold on file never reports
"not found" for a former member. Compose statuses to narrow to current members.
An external user ID is unique within an organization, not across them, and this filter searches
every organization you can see. One value can therefore return more than one Individual when
separate organizations independently use the same member identifier. Compose organizationIds
to scope a lookup to a single organization.
IndividualsFilterInput.ids ● [ID!] list scalar
If specified, only returns Individuals matching these Individual IDs
IndividualsFilterInput.organizationIds ● [ID!] list scalar
If specified, only returns Individuals who are members of these Organizations
IndividualsFilterInput.platformIds ● [ID!] list scalar
If specified, qualifies externalUserIds with one or more external platforms linked to your
account: only Individuals holding one of the supplied values as their identifier on one of the
supplied platforms are returned. Each value is an id returned by linkedExternalPlatforms.
Values within externalUserIds are ORed, values within platformIds are ORed, and the two lists
are ANDed; they are not paired positionally.
A platform qualifies a lookup and is not a filter on its own: supplying platformIds without
externalUserIds is rejected as a top-level GraphQL error with extension code BAD_USER_INPUT.
An explicitly empty platformIds beside a non-empty externalUserIds matches no Individuals.
Omitting platformIds (or passing null) keeps the membership lookup described on
externalUserIds; the two sources are never combined in one query. A value that is not one of
your linked platform IDs is rejected as a top-level GraphQL error with extension code
BAD_USER_INPUT.
Matching ignores case, whitespace and punctuation, as for the membership lookup, and a value of only punctuation or whitespace matches no Individuals. Every value is matched as an identifier; a 64-character lowercase hexadecimal value is not treated as a pre-hashed identifier.
An identifier is not unique on a platform: one value can return more than one Individual, even
within one organization, and one Individual can match through several platforms in one query.
The response does not say which platform or identifier matched. To resolve a single Individual,
send one platform per query and compose ids or organizationIds when more than one is
returned. organizationIds filters the Individuals returned; it does not restrict which
organization an identifier was recorded for.
Terminated members are still returned here too; compose statuses to narrow. The 100-value
maximum on externalUserIds applies unchanged.
IndividualsFilterInput.statuses ● [AccountEnrollmentStatus!] list enum
If specified, returns a filtered list of Individuals based on the specified statuses
Member Of
individuals query