From 4d0f61ec8fdff24036402843a2ac0b70b2a83d9f Mon Sep 17 00:00:00 2001 From: Matthieu B Date: Fri, 4 Jul 2025 15:58:05 +0200 Subject: [PATCH 1/3] fix: acceptInvite-v2-endpoint --- plexapi/myplex.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/plexapi/myplex.py b/plexapi/myplex.py index 411d56183..121065c7d 100644 --- a/plexapi/myplex.py +++ b/plexapi/myplex.py @@ -558,20 +558,15 @@ def removeManagedUserPin(self, user): return self.query(url, self._session.post, params=params) def acceptInvite(self, user): - """ Accept a pending friend invite from the specified user. + """Accept a pending invite. - Parameters: - user (:class:`~plexapi.myplex.MyPlexInvite` or str): :class:`~plexapi.myplex.MyPlexInvite`, - username, or email of the friend invite to accept. + Parameters: + user (:class:`~plexapi.myplex.MyPlexInvite` | str): Invite object, username, or email. """ invite = user if isinstance(user, MyPlexInvite) else self.pendingInvite(user, includeSent=False) - params = { - 'friend': int(invite.friend), - 'home': int(invite.home), - 'server': int(invite.server) - } - url = MyPlexInvite.REQUESTS + f'/{invite.id}' + utils.joinArgs(params) - return self.query(url, self._session.put) + + url = f"https://plex.tv/api/v2/shared_servers/{invite.id}/accept" + return self.query(url, self._session.post) def cancelInvite(self, user): """ Cancel a pending firend invite for the specified user. From bff0656141c468cededf81b3e1b2a20da7997722 Mon Sep 17 00:00:00 2001 From: Matthieu B Date: Thu, 10 Jul 2025 15:45:09 +0200 Subject: [PATCH 2/3] fix: update invite endpoints to v2 API --- plexapi/myplex.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plexapi/myplex.py b/plexapi/myplex.py index 121065c7d..1e763eb3f 100644 --- a/plexapi/myplex.py +++ b/plexapi/myplex.py @@ -1281,8 +1281,8 @@ class MyPlexInvite(PlexObject): username (str): User's username. """ TAG = 'Invite' - REQUESTS = 'https://plex.tv/api/invites/requests' - REQUESTED = 'https://plex.tv/api/invites/requested' + REQUESTS = 'https://clients.plex.tv/api/v2/shared_servers/invites/received/pending' + REQUESTED = 'https://clients.plex.tv/api/v2/shared_servers/invites/owned/pending' def _loadData(self, data): """ Load attribute values from Plex XML response. """ From 660c61897930d594e695f89987e71f5c748758be Mon Sep 17 00:00:00 2001 From: Matthieu B Date: Thu, 10 Jul 2025 15:47:20 +0200 Subject: [PATCH 3/3] fix: update invite endpoints to v2 API --- plexapi/myplex.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plexapi/myplex.py b/plexapi/myplex.py index 1e763eb3f..00439b7bb 100644 --- a/plexapi/myplex.py +++ b/plexapi/myplex.py @@ -565,7 +565,8 @@ def acceptInvite(self, user): """ invite = user if isinstance(user, MyPlexInvite) else self.pendingInvite(user, includeSent=False) - url = f"https://plex.tv/api/v2/shared_servers/{invite.id}/accept" + + url = MyPlexInvite.REQUESTS + f'/{invite.id}' + "/accept" return self.query(url, self._session.post) def cancelInvite(self, user):