async def _generate_user_entities(
        self, client: httpx.AsyncClient
    ) -> AsyncGenerator[ChunkEntity, None]:
        """Generate SlackUserEntity objects from Slack using users.list.

        Endpoint: https://slack.com/api/users.list
        Scope(s): users:read
        """
        url = "https://slack.com/api/users.list"
        params = {"limit": 200}

        while True:
            data = await self._get_with_auth(client, url, params=params)

            for member in data.get("members", []):
                yield SlackUserEntity(
                    entity_id=member["id"],
                    user_id=member["id"],
                    team_id=member.get("team_id"),
                    name=member.get("name"),
                    real_name=member.get("real_name"),
                    display_name=member.get("profile", {}).get("display_name"),
                    is_bot=member.get("is_bot", False),
                    is_admin=member.get("is_admin", False),
                    is_owner=member.get("is_owner", False),
                    is_primary_owner=member.get("is_primary_owner", False),
                    is_restricted=member.get("is_restricted", False),
                    is_ultra_restricted=member.get("is_ultra_restricted", False),
                    updated=member.get("profile", {}).get("updated"),
                )

            next_cursor = data.get("response_metadata", {}).get("next_cursor")
            if not next_cursor:
                break
            params["cursor"] = next_cursor
Generate SlackUserEntity objects from Slack using users.list.

        Endpoint: https://slack.com/api/users.list
        Scope(s): users:read
        
backend/airweave/platform/sources/slack.py