BerriAI/litellm · error · HTTPException
Invalid member: user ID cannot be empty.
Error message
Invalid member: user ID cannot be empty.
What it means
_member_value validates that each SCIM group member carries a non-empty value (the user id); an empty or whitespace-only value is unresolvable, so the request is rejected with 400 before any classification happens. At-fault input is SCIMMember.value empty/blank.
Source
Thrown at litellm/proxy/management_endpoints/scim/scim_v2.py:493
class _UnknownMember(NamedTuple):
value: str
_ClassifiedGroupMember = Union[_ResolvedUserMember, _SkippedGroupMember, _UnknownMember]
class _PartitionedMembers(NamedTuple):
resolved_ids: tuple[str, ...]
skipped: tuple[_SkippedGroupMember, ...]
unknown_ids: tuple[str, ...]
def _member_value(member: SCIMMember) -> str:
"""A member id is opaque to us but has to be there; an empty one is a client error."""
if not member.value or not member.value.strip():
raise HTTPException(
status_code=400,
detail={"error": "Invalid member: user ID cannot be empty."},
)
return member.value
def _normalized_member_type(member: SCIMMember) -> str | None:
"""The canonical ``type`` a member declares, lowercased; blank or absent means none."""
normalized: Final = (member.type or "").strip().lower()
return normalized or None
_JSON_OBJECT_ADAPTER: Final = TypeAdapter(dict[str, object])
def _json_object_fields(raw: object) -> Mapping[str, object] | None:
"""A typed, read-only view of a JSON object, or None when it is not one."""
try:View on GitHub (pinned to 77b7c6c40c)
Solutions
- Provide a non-empty user ID (value) for each member in the group payload.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/management_endpoints/scim/scim_v2.py:493 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/b04d118b2eb0660b.
Report an issue: GitHub.