{"record":{"id":"b04d118b2eb0660b","repo":"BerriAI/litellm","slug":"invalid-member-user-id-cannot-be-empty","errorCode":null,"errorMessage":"Invalid member: user ID cannot be empty.","messagePattern":"Invalid member: user ID cannot be empty\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/management_endpoints/scim/scim_v2.py","lineNumber":493,"sourceCode":"\n\nclass _UnknownMember(NamedTuple):\n    value: str\n\n\n_ClassifiedGroupMember = Union[_ResolvedUserMember, _SkippedGroupMember, _UnknownMember]\n\n\nclass _PartitionedMembers(NamedTuple):\n    resolved_ids: tuple[str, ...]\n    skipped: tuple[_SkippedGroupMember, ...]\n    unknown_ids: tuple[str, ...]\n\n\ndef _member_value(member: SCIMMember) -> str:\n    \"\"\"A member id is opaque to us but has to be there; an empty one is a client error.\"\"\"\n    if not member.value or not member.value.strip():\n        raise HTTPException(\n            status_code=400,\n            detail={\"error\": \"Invalid member: user ID cannot be empty.\"},\n        )\n    return member.value\n\n\ndef _normalized_member_type(member: SCIMMember) -> str | None:\n    \"\"\"The canonical ``type`` a member declares, lowercased; blank or absent means none.\"\"\"\n    normalized: Final = (member.type or \"\").strip().lower()\n    return normalized or None\n\n\n_JSON_OBJECT_ADAPTER: Final = TypeAdapter(dict[str, object])\n\n\ndef _json_object_fields(raw: object) -> Mapping[str, object] | None:\n    \"\"\"A typed, read-only view of a JSON object, or None when it is not one.\"\"\"\n    try:","sourceCodeStart":475,"sourceCodeEnd":511,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/scim/scim_v2.py#L475-L511","documentation":"_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.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/scim/scim_v2.py:493 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty user ID (value) for each member in the group payload."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}