diff --git a/src/lib/PnP.Framework/Graph/GroupsUtility.cs b/src/lib/PnP.Framework/Graph/GroupsUtility.cs index 354f67f1f..a6588c865 100644 --- a/src/lib/PnP.Framework/Graph/GroupsUtility.cs +++ b/src/lib/PnP.Framework/Graph/GroupsUtility.cs @@ -121,8 +121,9 @@ private static void UpdateMembers(string[] members, string groupId, bool removeO try { // And if any, add it to the collection of group's members - var memberUrl = $"{groupRequestUrl}/members/{user.Id}/ref"; - HttpHelper.MakePostRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); + var memberUrl = $"{groupRequestUrl}/members/$ref"; + object content = new JObject { ["@odata.id"] = $"{userRequestUrl}/{user.Id}" }; + HttpHelper.MakePostRequest(memberUrl, content, HttpHelper.JsonContentType, accessToken, retryCount: retryCount, delay: delay); } catch (Exception ex) when (ex.Message.Contains("Request_BadRequest") && ex.Message.Contains("added object references already exist")) @@ -150,7 +151,7 @@ private static void UpdateMembers(string[] members, string groupId, bool removeO try { // If it is not in the list of current members, just remove it - var memberUrl = $"{groupRequestUrl}/members/{member.Id}/ref"; + var memberUrl = $"{groupRequestUrl}/members/{member.Id}/$ref"; HttpHelper.MakeDeleteRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -187,8 +188,9 @@ private static void UpdateOwners(string[] owners, string groupId, bool removeOth try { // And if any, add it to the collection of group's owners - var memberUrl = $"{groupRequestUrl}/owners/{user.Id}/ref"; - HttpHelper.MakePostRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); + var memberUrl = $"{groupRequestUrl}/owners/$ref"; + object content = new JObject { ["@odata.id"] = $"{userRequestUrl}/{user.Id}" }; + HttpHelper.MakePostRequest(memberUrl, content, HttpHelper.JsonContentType, accessToken, retryCount: retryCount, delay: delay); } catch (Exception ex) when (ex.Message.Contains("Request_BadRequest") && ex.Message.Contains("added object references already exist")) @@ -216,7 +218,7 @@ private static void UpdateOwners(string[] owners, string groupId, bool removeOth try { // If it is not in the list of current owners, just remove it - var memberUrl = $"{groupRequestUrl}/owners/{owner.Id}/ref"; + var memberUrl = $"{groupRequestUrl}/owners/{owner.Id}/$ref"; HttpHelper.MakeDeleteRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -641,7 +643,7 @@ public static void RemoveGroupMembers(string groupId, string[] members, string a try { // If it is not in the list of current members, just remove it - var deleteGroupMemberUrl = $"{groupRequestUrl}/members/{userId}/ref"; + var deleteGroupMemberUrl = $"{groupRequestUrl}/members/{userId}/$ref"; HttpHelper.MakeDeleteRequest(deleteGroupMemberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -694,7 +696,7 @@ public static void RemoveGroupOwners(string groupId, string[] owners, string acc try { // If it is not in the list of current owners, just remove it - var deleteGroupMemberUrl = $"{groupRequestUrl}/owners/{userId}/ref"; + var deleteGroupMemberUrl = $"{groupRequestUrl}/owners/{userId}/$ref"; HttpHelper.MakeDeleteRequest(deleteGroupMemberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) diff --git a/src/lib/PnP.Framework/Graph/UnifiedGroupsUtility.cs b/src/lib/PnP.Framework/Graph/UnifiedGroupsUtility.cs index ea3fb453e..ad5353510 100644 --- a/src/lib/PnP.Framework/Graph/UnifiedGroupsUtility.cs +++ b/src/lib/PnP.Framework/Graph/UnifiedGroupsUtility.cs @@ -324,8 +324,9 @@ private static void UpdateMembers(string[] members, string groupId, bool removeO try { // And if any, add it to the collection of group's members - var memberUrl = $"{groupRequestUrl}/members/{user.Id}/ref"; - HttpHelper.MakePostRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); + var memberUrl = $"{groupRequestUrl}/members/$ref"; + object content = new JObject { ["@odata.id"] = $"{userRequestUrl}/{user.Id}" }; + HttpHelper.MakePostRequest(memberUrl, content, HttpHelper.JsonContentType, accessToken, retryCount: retryCount, delay: delay); } catch (Exception ex) when (ex.Message.Contains("Request_BadRequest") && ex.Message.Contains("added object references already exist")) @@ -353,7 +354,7 @@ private static void UpdateMembers(string[] members, string groupId, bool removeO try { // If it is not in the list of current members, just remove it - var memberUrl = $"{groupRequestUrl}/members/{member.Id}/ref"; + var memberUrl = $"{groupRequestUrl}/members/{member.Id}/$ref"; HttpHelper.MakeDeleteRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -390,8 +391,9 @@ private static void UpdateOwners(string[] owners, string groupId, bool removeOth try { // And if any, add it to the collection of group's owners - var memberUrl = $"{groupRequestUrl}/owners/{user.Id}/ref"; - HttpHelper.MakePostRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); + var memberUrl = $"{groupRequestUrl}/owners/$ref"; + object content = new JObject { ["@odata.id"] = $"{userRequestUrl}/{user.Id}" }; + HttpHelper.MakePostRequest(memberUrl, content, HttpHelper.JsonContentType, accessToken, retryCount: retryCount, delay: delay); } catch (Exception ex) when (ex.Message.Contains("Request_BadRequest") && ex.Message.Contains("added object references already exist")) @@ -419,7 +421,7 @@ private static void UpdateOwners(string[] owners, string groupId, bool removeOth try { // If it is not in the list of current owners, just remove it - var memberUrl = $"{groupRequestUrl}/owners/{owner.Id}/ref"; + var memberUrl = $"{groupRequestUrl}/owners/{owner.Id}/$ref"; HttpHelper.MakeDeleteRequest(memberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -1160,7 +1162,7 @@ public static void RemoveUnifiedGroupMembers(string groupId, string[] members, s try { // If it is not in the list of current members, just remove it - var deleteGroupMemberUrl = $"{groupRequestUrl}/members/{userId}/ref"; + var deleteGroupMemberUrl = $"{groupRequestUrl}/members/{userId}/$ref"; HttpHelper.MakeDeleteRequest(deleteGroupMemberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400) @@ -1213,7 +1215,7 @@ public static void RemoveUnifiedGroupOwners(string groupId, string[] owners, str try { // If it is not in the list of current owners, just remove it - var deleteGroupMemberUrl = $"{groupRequestUrl}/owners/{userId}/ref"; + var deleteGroupMemberUrl = $"{groupRequestUrl}/owners/{userId}/$ref"; HttpHelper.MakeDeleteRequest(deleteGroupMemberUrl, accessToken, retryCount: retryCount, delay: delay); } catch (HttpResponseException ex) when (ex.StatusCode == 400)