Model/M365GroupPolicyCreationModel.ps1

#
# Fly SDK API
# No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
# Version: 1.0
# Contact: support@avepoint.com
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS
 
No summary available.
 
.DESCRIPTION
 
No description available.
 
.PARAMETER IsBackupPlanner
No description available.
.PARAMETER IsBackupMembership
No description available.
.PARAMETER IsMicrosoftEntraRoles
No description available.
.PARAMETER EnableMigrateGuestUsers
No description available.
.PARAMETER IsBackupMailbox
No description available.
.PARAMETER AdvancedExchangePolicyId
No description available.
.PARAMETER AdvancedSharePointPolicyId
No description available.
.PARAMETER SiteCondition
* `WholeTeamSite` = 0 * `OnlyDefaultDocumentLibrary` = 1
.PARAMETER ContainerConflictResolution
* `Skip` = 0 * `Overwrite` = 1 * `Merge` = 2 * `OverwriteByLastModifiedTime` = 3 * `Append` = 4
.PARAMETER TeamConflictResolution
* `Skip` = 0 * `Overwrite` = 1 * `Merge` = 2 * `OverwriteByLastModifiedTime` = 3 * `Append` = 4
.PARAMETER MailboxConflictResolution
* `Skip` = 0 * `Overwrite` = 1 * `Merge` = 2 * `OverwriteByLastModifiedTime` = 3 * `Append` = 4
.PARAMETER ManageFileLabelCondition
* `KeepExisting` = 0 * `DoNotCopy` = 1 * `ApplySame` = 2 * `ConfigureCustom` = 3
.PARAMETER ManageGroupLabelCondition
* `KeepExisting` = 0 * `DoNotCopy` = 1 * `ApplySame` = 2 * `ConfigureCustom` = 3
.PARAMETER IsReplaceEmail
No description available.
.PARAMETER IsReplaceMeetingLink
No description available.
.PARAMETER IsSyncTeamGroupPrivacyChanges
No description available.
.PARAMETER IsRemoveSourceFromFiles
No description available.
.PARAMETER FileLabelMappingProfileId
No description available.
.PARAMETER GroupLabelMappingProfileId
No description available.
.PARAMETER UserMappingProfileId
No description available.
.PARAMETER UserMappingRules
No description available.
.PARAMETER Name
No description available.
.PARAMETER Description
No description available.
.PARAMETER MigrationModuleType
* `Exchange` = 0 * `Teams` = 1 * `SharePoint` = 2 * `OneDrive` = 3 * `M365Group` = 4 * `TeamChat` = 5 * `HostedExchange` = 6 * `PowerPlatform` = 7 * `Gmail` = 8 * `GoogleDrive` = 9 * `ActiveDirectory` = 10 * `Entra` = 11 * `DeviceToActiveDirectory` = 14 * `SPOToGDrive` = 21 * `ODriveToGDrive` = 22 * `GDriveToGDrive` = 23 * `ExchangeToGmail` = 24 * `TeamsToGoogleChat` = 25 * `TeamChatToGoogleDM` = 26 * `M365GroupToGoogleGroup` = 27 * `TeamChatToGoogleChat` = 28
.PARAMETER Notification
No description available.
.PARAMETER IsDefault
No description available.
.PARAMETER CustomizeFeatures
No description available.
.OUTPUTS
 
M365GroupPolicyCreationModel<PSCustomObject>
#>


function Initialize-FlyM365GroupPolicyCreationModel {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsBackupPlanner},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsBackupMembership},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsMicrosoftEntraRoles},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${EnableMigrateGuestUsers},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsBackupMailbox},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${AdvancedExchangePolicyId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${AdvancedSharePointPolicyId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${SiteCondition},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${ContainerConflictResolution},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${TeamConflictResolution},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${MailboxConflictResolution},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${ManageFileLabelCondition},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${ManageGroupLabelCondition},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsReplaceEmail},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsReplaceMeetingLink},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsSyncTeamGroupPrivacyChanges},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsRemoveSourceFromFiles},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${FileLabelMappingProfileId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${GroupLabelMappingProfileId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${UserMappingProfileId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject[]]
        ${UserMappingRules},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Name},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Description},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${MigrationModuleType},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Notification},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsDefault},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String[]]
        ${CustomizeFeatures}
    )

    Process {
        'Creating PSCustomObject: Fly.Client => FlyM365GroupPolicyCreationModel' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug


        $PSO = [PSCustomObject]@{
            "isBackupPlanner" = ${IsBackupPlanner}
            "isBackupMembership" = ${IsBackupMembership}
            "isMicrosoftEntraRoles" = ${IsMicrosoftEntraRoles}
            "enableMigrateGuestUsers" = ${EnableMigrateGuestUsers}
            "isBackupMailbox" = ${IsBackupMailbox}
            "advancedExchangePolicyId" = ${AdvancedExchangePolicyId}
            "advancedSharePointPolicyId" = ${AdvancedSharePointPolicyId}
            "siteCondition" = ${SiteCondition}
            "containerConflictResolution" = ${ContainerConflictResolution}
            "teamConflictResolution" = ${TeamConflictResolution}
            "mailboxConflictResolution" = ${MailboxConflictResolution}
            "manageFileLabelCondition" = ${ManageFileLabelCondition}
            "manageGroupLabelCondition" = ${ManageGroupLabelCondition}
            "isReplaceEmail" = ${IsReplaceEmail}
            "isReplaceMeetingLink" = ${IsReplaceMeetingLink}
            "isSyncTeamGroupPrivacyChanges" = ${IsSyncTeamGroupPrivacyChanges}
            "isRemoveSourceFromFiles" = ${IsRemoveSourceFromFiles}
            "fileLabelMappingProfileId" = ${FileLabelMappingProfileId}
            "groupLabelMappingProfileId" = ${GroupLabelMappingProfileId}
            "userMappingProfileId" = ${UserMappingProfileId}
            "userMappingRules" = ${UserMappingRules}
            "name" = ${Name}
            "description" = ${Description}
            "migrationModuleType" = ${MigrationModuleType}
            "notification" = ${Notification}
            "isDefault" = ${IsDefault}
            "customizeFeatures" = ${CustomizeFeatures}
        }

        return $PSO
    }
}

<#
.SYNOPSIS
 
Convert from JSON to M365GroupPolicyCreationModel<PSCustomObject>
 
.DESCRIPTION
 
Convert from JSON to M365GroupPolicyCreationModel<PSCustomObject>
 
.PARAMETER Json
 
Json object
 
.OUTPUTS
 
M365GroupPolicyCreationModel<PSCustomObject>
#>

function ConvertFrom-FlyJsonToM365GroupPolicyCreationModel {
    Param(
        [AllowEmptyString()]
        [string]$Json
    )

    Process {
        'Converting JSON to PSCustomObject: Fly.Client => FlyM365GroupPolicyCreationModel' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in FlyM365GroupPolicyCreationModel
        $AllProperties = ("isBackupPlanner", "isBackupMembership", "isMicrosoftEntraRoles", "enableMigrateGuestUsers", "isBackupMailbox", "advancedExchangePolicyId", "advancedSharePointPolicyId", "siteCondition", "containerConflictResolution", "teamConflictResolution", "mailboxConflictResolution", "manageFileLabelCondition", "manageGroupLabelCondition", "isReplaceEmail", "isReplaceMeetingLink", "isSyncTeamGroupPrivacyChanges", "isRemoveSourceFromFiles", "fileLabelMappingProfileId", "groupLabelMappingProfileId", "userMappingProfileId", "userMappingRules", "name", "description", "migrationModuleType", "notification", "isDefault", "customizeFeatures")
        foreach ($name in $JsonParameters.PsObject.Properties.Name) {
            if (!($AllProperties.Contains($name))) {
                throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
            }
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isBackupPlanner"))) { #optional property not found
            $IsBackupPlanner = $null
        } else {
            $IsBackupPlanner = $JsonParameters.PSobject.Properties["isBackupPlanner"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isBackupMembership"))) { #optional property not found
            $IsBackupMembership = $null
        } else {
            $IsBackupMembership = $JsonParameters.PSobject.Properties["isBackupMembership"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isMicrosoftEntraRoles"))) { #optional property not found
            $IsMicrosoftEntraRoles = $null
        } else {
            $IsMicrosoftEntraRoles = $JsonParameters.PSobject.Properties["isMicrosoftEntraRoles"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "enableMigrateGuestUsers"))) { #optional property not found
            $EnableMigrateGuestUsers = $null
        } else {
            $EnableMigrateGuestUsers = $JsonParameters.PSobject.Properties["enableMigrateGuestUsers"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isBackupMailbox"))) { #optional property not found
            $IsBackupMailbox = $null
        } else {
            $IsBackupMailbox = $JsonParameters.PSobject.Properties["isBackupMailbox"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "advancedExchangePolicyId"))) { #optional property not found
            $AdvancedExchangePolicyId = $null
        } else {
            $AdvancedExchangePolicyId = $JsonParameters.PSobject.Properties["advancedExchangePolicyId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "advancedSharePointPolicyId"))) { #optional property not found
            $AdvancedSharePointPolicyId = $null
        } else {
            $AdvancedSharePointPolicyId = $JsonParameters.PSobject.Properties["advancedSharePointPolicyId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "siteCondition"))) { #optional property not found
            $SiteCondition = $null
        } else {
            $SiteCondition = $JsonParameters.PSobject.Properties["siteCondition"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "containerConflictResolution"))) { #optional property not found
            $ContainerConflictResolution = $null
        } else {
            $ContainerConflictResolution = $JsonParameters.PSobject.Properties["containerConflictResolution"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "teamConflictResolution"))) { #optional property not found
            $TeamConflictResolution = $null
        } else {
            $TeamConflictResolution = $JsonParameters.PSobject.Properties["teamConflictResolution"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "mailboxConflictResolution"))) { #optional property not found
            $MailboxConflictResolution = $null
        } else {
            $MailboxConflictResolution = $JsonParameters.PSobject.Properties["mailboxConflictResolution"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "manageFileLabelCondition"))) { #optional property not found
            $ManageFileLabelCondition = $null
        } else {
            $ManageFileLabelCondition = $JsonParameters.PSobject.Properties["manageFileLabelCondition"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "manageGroupLabelCondition"))) { #optional property not found
            $ManageGroupLabelCondition = $null
        } else {
            $ManageGroupLabelCondition = $JsonParameters.PSobject.Properties["manageGroupLabelCondition"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isReplaceEmail"))) { #optional property not found
            $IsReplaceEmail = $null
        } else {
            $IsReplaceEmail = $JsonParameters.PSobject.Properties["isReplaceEmail"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isReplaceMeetingLink"))) { #optional property not found
            $IsReplaceMeetingLink = $null
        } else {
            $IsReplaceMeetingLink = $JsonParameters.PSobject.Properties["isReplaceMeetingLink"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isSyncTeamGroupPrivacyChanges"))) { #optional property not found
            $IsSyncTeamGroupPrivacyChanges = $null
        } else {
            $IsSyncTeamGroupPrivacyChanges = $JsonParameters.PSobject.Properties["isSyncTeamGroupPrivacyChanges"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isRemoveSourceFromFiles"))) { #optional property not found
            $IsRemoveSourceFromFiles = $null
        } else {
            $IsRemoveSourceFromFiles = $JsonParameters.PSobject.Properties["isRemoveSourceFromFiles"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "fileLabelMappingProfileId"))) { #optional property not found
            $FileLabelMappingProfileId = $null
        } else {
            $FileLabelMappingProfileId = $JsonParameters.PSobject.Properties["fileLabelMappingProfileId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "groupLabelMappingProfileId"))) { #optional property not found
            $GroupLabelMappingProfileId = $null
        } else {
            $GroupLabelMappingProfileId = $JsonParameters.PSobject.Properties["groupLabelMappingProfileId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "userMappingProfileId"))) { #optional property not found
            $UserMappingProfileId = $null
        } else {
            $UserMappingProfileId = $JsonParameters.PSobject.Properties["userMappingProfileId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "userMappingRules"))) { #optional property not found
            $UserMappingRules = $null
        } else {
            $UserMappingRules = $JsonParameters.PSobject.Properties["userMappingRules"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "name"))) { #optional property not found
            $Name = $null
        } else {
            $Name = $JsonParameters.PSobject.Properties["name"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "description"))) { #optional property not found
            $Description = $null
        } else {
            $Description = $JsonParameters.PSobject.Properties["description"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "migrationModuleType"))) { #optional property not found
            $MigrationModuleType = $null
        } else {
            $MigrationModuleType = $JsonParameters.PSobject.Properties["migrationModuleType"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "notification"))) { #optional property not found
            $Notification = $null
        } else {
            $Notification = $JsonParameters.PSobject.Properties["notification"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "isDefault"))) { #optional property not found
            $IsDefault = $null
        } else {
            $IsDefault = $JsonParameters.PSobject.Properties["isDefault"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "customizeFeatures"))) { #optional property not found
            $CustomizeFeatures = $null
        } else {
            $CustomizeFeatures = $JsonParameters.PSobject.Properties["customizeFeatures"].value
        }

        $PSO = [PSCustomObject]@{
            "isBackupPlanner" = ${IsBackupPlanner}
            "isBackupMembership" = ${IsBackupMembership}
            "isMicrosoftEntraRoles" = ${IsMicrosoftEntraRoles}
            "enableMigrateGuestUsers" = ${EnableMigrateGuestUsers}
            "isBackupMailbox" = ${IsBackupMailbox}
            "advancedExchangePolicyId" = ${AdvancedExchangePolicyId}
            "advancedSharePointPolicyId" = ${AdvancedSharePointPolicyId}
            "siteCondition" = ${SiteCondition}
            "containerConflictResolution" = ${ContainerConflictResolution}
            "teamConflictResolution" = ${TeamConflictResolution}
            "mailboxConflictResolution" = ${MailboxConflictResolution}
            "manageFileLabelCondition" = ${ManageFileLabelCondition}
            "manageGroupLabelCondition" = ${ManageGroupLabelCondition}
            "isReplaceEmail" = ${IsReplaceEmail}
            "isReplaceMeetingLink" = ${IsReplaceMeetingLink}
            "isSyncTeamGroupPrivacyChanges" = ${IsSyncTeamGroupPrivacyChanges}
            "isRemoveSourceFromFiles" = ${IsRemoveSourceFromFiles}
            "fileLabelMappingProfileId" = ${FileLabelMappingProfileId}
            "groupLabelMappingProfileId" = ${GroupLabelMappingProfileId}
            "userMappingProfileId" = ${UserMappingProfileId}
            "userMappingRules" = ${UserMappingRules}
            "name" = ${Name}
            "description" = ${Description}
            "migrationModuleType" = ${MigrationModuleType}
            "notification" = ${Notification}
            "isDefault" = ${IsDefault}
            "customizeFeatures" = ${CustomizeFeatures}
        }

        return $PSO
    }

}