diff --git a/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteCreationTests.cs b/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteCreationTests.cs index 6c598c5d3f..7d6ad940c4 100644 --- a/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteCreationTests.cs +++ b/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteCreationTests.cs @@ -4,6 +4,7 @@ using PnP.Core.Admin.Model.Teams; using PnP.Core.Admin.Test.Utilities; using PnP.Core.Model; +using PnP.Core.Model.Security; using PnP.Core.Model.SharePoint; using PnP.Core.QueryModel; using PnP.Core.Services; @@ -450,7 +451,7 @@ public async Task CreateTeamSiteUsingDelegatedPermissions() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, }; @@ -547,7 +548,7 @@ public async Task CreateTeamSiteAdvancedUsingDelegatedPermissions() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, SensitivityLabelId = sensitivityLabelId }; @@ -627,7 +628,7 @@ public async Task CreateTeamSiteUsingApplicationPermissions() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, Owners = new string[] { user.UserPrincipalName } }; @@ -706,7 +707,7 @@ public async Task CreateTeamSiteUsingEmptyDescriptionApplicationPermissions() { Description = "", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, Owners = new string[] { user.UserPrincipalName } }; @@ -780,7 +781,7 @@ public async Task CreateTeamSiteUsingNoDescriptionApplicationPermissions() teamSiteToCreate = new TeamSiteOptions(alias, "PnP Core SDK Test") { Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, Owners = new string[] { user.UserPrincipalName } }; @@ -862,7 +863,7 @@ public async Task CreateTeamSiteWithMembersUsingApplicationPermissions() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, Owners = new string[] { testOwner.UserPrincipalName }, Members = new string[] { testMember.UserPrincipalName } }; @@ -983,7 +984,7 @@ public async Task CreateTeamSiteWithResourceBehaviorOptionsUsingApplicationPermi { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, Owners = new string[] { user.UserPrincipalName }, HideGroupInOutlook = true, WelcomeEmailDisabled = true, @@ -1325,7 +1326,7 @@ public async Task CreateRestoreDeleteGroupConnectedSiteUsingDelegatedPermissions { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, }; SiteCreationOptions siteCreationOptions = new SiteCreationOptions() @@ -1661,7 +1662,7 @@ public async Task TeamifyTeamSiteUsingDelegatedPermissions() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, }; diff --git a/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteManagerTests.cs b/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteManagerTests.cs index 6f0644969b..d0f20b6ba9 100644 --- a/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteManagerTests.cs +++ b/src/sdk/PnP.Core.Admin.Test/SharePoint/SiteManagerTests.cs @@ -2,6 +2,7 @@ using PnP.Core.Admin.Model.SharePoint; using PnP.Core.Admin.Test.Utilities; using PnP.Core.Model; +using PnP.Core.Model.Security; using PnP.Core.QueryModel; using PnP.Core.Services; using System; @@ -1269,7 +1270,7 @@ public async Task SetSiteCollectionAdminsGroupSite() { Description = "This is a test site collection", Language = Language.English, - IsPublic = true, + Visibility = GroupVisibility.Public, }; diff --git a/src/sdk/PnP.Core.Admin/Model/Microsoft365/Public/Options/GraphGroupOptions.cs b/src/sdk/PnP.Core.Admin/Model/Microsoft365/Public/Options/GraphGroupOptions.cs index d61fab3601..bb243c1ac2 100644 --- a/src/sdk/PnP.Core.Admin/Model/Microsoft365/Public/Options/GraphGroupOptions.cs +++ b/src/sdk/PnP.Core.Admin/Model/Microsoft365/Public/Options/GraphGroupOptions.cs @@ -75,5 +75,11 @@ public class GraphGroupOptions /// Allows defining creation options for SharePoint Site Creation /// public List CreationOptions { get; set; } + + /// + /// Option to add custom data to the post request for creating a group like the custom property for a EducationClass + /// + [JsonExtensionData] + public IDictionary AdditionalData { get; set; } = null; } } diff --git a/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Internal/SiteCollectionCreator.cs b/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Internal/SiteCollectionCreator.cs index 537b3ab6f2..53d7d3b81f 100644 --- a/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Internal/SiteCollectionCreator.cs +++ b/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Internal/SiteCollectionCreator.cs @@ -67,7 +67,7 @@ internal static async Task ConnectGroupToSiteAsync(PnPContext contex { { "displayName", siteToGroupify.DisplayName }, { "alias", NormalizeSiteAlias(siteToGroupify.Alias) }, - { "isPublic", siteToGroupify.IsPublic } + { "isPublic", siteToGroupify.Visibility == GroupVisibility.Public } }; var optionalParams = new Dictionary @@ -198,12 +198,13 @@ private static async Task CreateTeamSiteAsync(PnPContext context, Te DisplayName = siteToCreate.DisplayName, MailNickname = siteToCreate.Alias, MailEnabled = true, - Visibility = siteToCreate.IsPublic ? GroupVisibility.Public.ToString() : GroupVisibility.Private.ToString(), + Visibility = siteToCreate.Visibility.ToString(), GroupTypes = new List { "Unified" }, Owners = siteToCreate.Owners, Members = siteToCreate.Members, ResourceBehaviorOptions = new List(), CreationOptions = new List(), + AdditionalData = siteToCreate.AdditionalData }; if (!string.IsNullOrEmpty(siteToCreate.Description)) diff --git a/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Public/Options/CommonGroupSiteOptions.cs b/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Public/Options/CommonGroupSiteOptions.cs index 64f8f0cec4..5459894ab9 100644 --- a/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Public/Options/CommonGroupSiteOptions.cs +++ b/src/sdk/PnP.Core.Admin/Model/SharePoint/Core/Public/Options/CommonGroupSiteOptions.cs @@ -1,5 +1,7 @@ using PnP.Core.Admin.Model.Microsoft365; +using PnP.Core.Model.Security; using System; +using System.Collections.Generic; namespace PnP.Core.Admin.Model.SharePoint { @@ -40,9 +42,9 @@ public CommonGroupSiteOptions(string alias, string displayName) public string DisplayName { get; set; } /// - /// Defines whether the Office 365 Group will be public (default), or private. + /// Defines whether the Office 365 Group will be public (default), or private or hiddenMembership. /// - public bool IsPublic { get; set; } = true; + public GroupVisibility Visibility { get; set; } = GroupVisibility.Public; /// /// The description of the site to be created. @@ -74,5 +76,10 @@ public CommonGroupSiteOptions(string alias, string displayName) /// public GeoLocation? PreferredDataLocation { get; set; } + /// + /// Option to add custom data to the post request for creating a group like the custom property for a EducationClass + /// + public IDictionary AdditionalData { get; set; } = null; + } } diff --git a/src/sdk/PnP.Core/Model/Security/Public/Enums/GroupVisibility.cs b/src/sdk/PnP.Core/Model/Security/Public/Enums/GroupVisibility.cs index bcc8c18fee..c1058da901 100644 --- a/src/sdk/PnP.Core/Model/Security/Public/Enums/GroupVisibility.cs +++ b/src/sdk/PnP.Core/Model/Security/Public/Enums/GroupVisibility.cs @@ -18,6 +18,6 @@ public enum GroupVisibility /// /// Group is a hidden membership group /// - Hiddenmembership + HiddenMembership } } diff --git a/src/sdk/PnP.Core/Model/Teams/Public/Enums/TeamVisibility.cs b/src/sdk/PnP.Core/Model/Teams/Public/Enums/TeamVisibility.cs index e258a8f4e7..7cc7041557 100644 --- a/src/sdk/PnP.Core/Model/Teams/Public/Enums/TeamVisibility.cs +++ b/src/sdk/PnP.Core/Model/Teams/Public/Enums/TeamVisibility.cs @@ -13,6 +13,11 @@ public enum TeamVisibility /// /// Public team /// - Public + Public, + + /// + /// Team is a hidden membership Team + /// + HiddenMembership } }