Skip to content

People provider

People - Access friendlist from own profiles and others

pythonxbox.api.provider.people.PeopleProvider(client)

Bases: RateLimitedProvider

Initialize Baseclass, set 'Accept-Language' header from client instance

Parameters:

Name Type Description Default
client (

class:XboxLiveClient): Instance of client

required
Source code in src/pythonxbox/api/provider/people/__init__.py
def __init__(self, client: "XboxLiveClient") -> None:
    """
    Initialize Baseclass, set 'Accept-Language' header from client instance

    Args:
        client (:class:`XboxLiveClient`): Instance of client
    """
    super().__init__(client)
    self._headers = {**self.HEADERS_PEOPLE}
    self._headers.update({"Accept-Language": self.client.language.locale})

SOCIAL_URL = 'https://social.xboxlive.com' class-attribute instance-attribute

HEADERS_SOCIAL = {'x-xbl-contract-version': '2'} class-attribute instance-attribute

PEOPLE_URL = 'https://peoplehub.xboxlive.com' class-attribute instance-attribute

HEADERS_PEOPLE = {'x-xbl-contract-version': '7', 'Accept-Language': 'overwrite in __init__'} class-attribute instance-attribute

SEPERATOR = ',' class-attribute instance-attribute

RATE_LIMITS = {'burst': 10, 'sustain': 30} class-attribute instance-attribute

client instance-attribute

get_friends_own(decoration_fields=None, **kwargs) async

Get friendlist of own profile

Returns:

Type Description
PeopleResponse

class:PeopleResponse: People Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_own(
    self, decoration_fields: list[PeopleDecoration] | None = None, **kwargs
) -> PeopleResponse:
    """
    Get friendlist of own profile

    Returns:
        :class:`PeopleResponse`: People Response
    """
    if not decoration_fields:
        decoration_fields = [
            PeopleDecoration.PREFERRED_COLOR,
            PeopleDecoration.DETAIL,
            PeopleDecoration.MULTIPLAYER_SUMMARY,
            PeopleDecoration.PRESENCE_DETAIL,
        ]
    decoration = self.SEPERATOR.join(decoration_fields)

    url = f"{self.PEOPLE_URL}/users/me/people/friends/decoration/{decoration}"
    resp = await self.client.session.get(url, headers=self._headers, **kwargs)
    resp.raise_for_status()
    return PeopleResponse.model_validate_json(resp.text)

get_friends_by_xuid(xuid, decoration_fields=None, **kwargs) async

Get friendlist of own profile

Returns:

Type Description
PeopleResponse

class:PeopleResponse: People Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_by_xuid(
    self,
    xuid: str,
    decoration_fields: list[PeopleDecoration] | None = None,
    **kwargs,
) -> PeopleResponse:
    """
    Get friendlist of own profile

    Returns:
        :class:`PeopleResponse`: People Response
    """
    if not decoration_fields:
        decoration_fields = [
            PeopleDecoration.PREFERRED_COLOR,
            PeopleDecoration.DETAIL,
            PeopleDecoration.MULTIPLAYER_SUMMARY,
            PeopleDecoration.PRESENCE_DETAIL,
        ]
    decoration = self.SEPERATOR.join(decoration_fields)

    url = f"{self.PEOPLE_URL}/users/me/people/xuids({xuid})/decoration/{decoration}"
    resp = await self.client.session.get(url, headers=self._headers, **kwargs)
    resp.raise_for_status()
    return PeopleResponse.model_validate_json(resp.text)

get_friends_own_batch(xuids, decoration_fields=None, **kwargs) async

Get friends metadata by providing a list of XUIDs

Parameters:

Name Type Description Default
xuids list[str]

List of XUIDs

required

Returns:

Type Description
PeopleResponse

class:PeopleResponse: People Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_own_batch(
    self,
    xuids: list[str],
    decoration_fields: list[PeopleDecoration] | None = None,
    **kwargs,
) -> PeopleResponse:
    """
    Get friends metadata by providing a list of XUIDs

    Args:
        xuids: List of XUIDs

    Returns:
        :class:`PeopleResponse`: People Response
    """
    if not decoration_fields:
        decoration_fields = [
            PeopleDecoration.PREFERRED_COLOR,
            PeopleDecoration.DETAIL,
            PeopleDecoration.MULTIPLAYER_SUMMARY,
            PeopleDecoration.PRESENCE_DETAIL,
        ]
    decoration = self.SEPERATOR.join(decoration_fields)

    url = f"{self.PEOPLE_URL}/users/me/people/batch/decoration/{decoration}"
    resp = await self.client.session.post(
        url, json={"xuids": xuids}, headers=self._headers, **kwargs
    )
    resp.raise_for_status()
    return PeopleResponse.model_validate_json(resp.text)

get_friend_recommendations(decoration_fields=None, **kwargs) async

Get recommended friends

Returns:

Type Description
PeopleResponse

class:PeopleResponse: People Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friend_recommendations(
    self, decoration_fields: list[PeopleDecoration] | None = None, **kwargs
) -> PeopleResponse:
    """
    Get recommended friends

    Returns:
        :class:`PeopleResponse`: People Response
    """
    if not decoration_fields:
        decoration_fields = [PeopleDecoration.DETAIL]
    decoration = self.SEPERATOR.join(decoration_fields)

    url = (
        f"{self.PEOPLE_URL}/users/me/people/recommendations/decoration/{decoration}"
    )
    resp = await self.client.session.get(url, headers=self._headers, **kwargs)
    resp.raise_for_status()
    return PeopleResponse.model_validate_json(resp.text)

get_friends_summary_own(**kwargs) async

Get friendlist summary of own profile

Returns:

Type Description
PeopleSummaryResponse

class:PeopleSummaryResponse: People Summary Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_summary_own(self, **kwargs) -> PeopleSummaryResponse:
    """
    Get friendlist summary of own profile

    Returns:
        :class:`PeopleSummaryResponse`: People Summary Response
    """
    url = self.SOCIAL_URL + "/users/me/summary"
    resp = await self.client.session.get(
        url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
    )
    resp.raise_for_status()
    return PeopleSummaryResponse.model_validate_json(resp.text)

get_friends_summary_by_xuid(xuid, **kwargs) async

Get friendlist summary of user by xuid

Parameters:

Name Type Description Default
xuid str

XUID to request summary from

required

Returns:

Type Description
PeopleSummaryResponse

class:PeopleSummaryResponse: People Summary Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_summary_by_xuid(
    self, xuid: str, **kwargs
) -> PeopleSummaryResponse:
    """
    Get friendlist summary of user by xuid

    Args:
        xuid: XUID to request summary from

    Returns:
        :class:`PeopleSummaryResponse`: People Summary Response
    """
    url = self.SOCIAL_URL + f"/users/xuid({xuid})/summary"
    resp = await self.client.session.get(
        url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
    )
    resp.raise_for_status()
    return PeopleSummaryResponse.model_validate_json(resp.text)

get_friends_summary_by_gamertag(gamertag, **kwargs) async

Get friendlist summary of user by gamertag

Parameters:

Name Type Description Default
gamertag str

Gamertag to request friendlist from

required

Returns:

Type Description
PeopleSummaryResponse

class:PeopleSummaryResponse: People Summary Response

Source code in src/pythonxbox/api/provider/people/__init__.py
async def get_friends_summary_by_gamertag(
    self, gamertag: str, **kwargs
) -> PeopleSummaryResponse:
    """
    Get friendlist summary of user by gamertag

    Args:
        gamertag: Gamertag to request friendlist from

    Returns:
        :class:`PeopleSummaryResponse`: People Summary Response
    """
    url = self.SOCIAL_URL + f"/users/gt({gamertag})/summary"
    resp = await self.client.session.get(
        url, headers=self.HEADERS_SOCIAL, rate_limits=self.rate_limit_read, **kwargs
    )
    resp.raise_for_status()
    return PeopleSummaryResponse.model_validate_json(resp.text)