Model/ExchangePolicyCreationModel.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 BackupObjects
No description available.
.PARAMETER IsBackupMailboxPermissions
No description available.
.PARAMETER IsBackupArchiveMailbox
No description available.
.PARAMETER FolderCondition
* `All` = 0 * `Include` = 1 * `Exclude` = 2
.PARAMETER FolderConditionValue
No description available.
.PARAMETER EarlierThan
No description available.
.PARAMETER LaterThan
No description available.
.PARAMETER ItemConflictResolution
* `Skip` = 0 * `Overwrite` = 1 * `Merge` = 2 * `OverwriteByLastModifiedTime` = 3 * `Append` = 4
.PARAMETER EnableSyncDeletion
No description available.
.PARAMETER EnableReplaceEmailAddress
No description available.
.PARAMETER EnableArchiveDateFilter
No description available.
.PARAMETER ArchiveDateFilter
No description available.
.PARAMETER EnableReplaceMeetingLink
No description available.
.PARAMETER DestinationFolder
No description available.
.PARAMETER EmailSensitivityLabel
* `KeepExisting` = 0 * `DoNotCopy` = 1 * `ApplySame` = 2 * `ConfigureCustom` = 3
.PARAMETER UserMappingProfileId
No description available.
.PARAMETER EmailLabelMappingProfileId
No description available.
.PARAMETER UserMappingRules
No description available.
.PARAMETER AutoProvisionArchiveMailbox
No description available.
.PARAMETER MigrateOOFSettings
No description available.
.PARAMETER MigrateAllSubFoldersAndTheirContents
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
 
ExchangePolicyCreationModel<PSCustomObject>
#>


function Initialize-FlyExchangePolicyCreationModel {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject[]]
        ${BackupObjects},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsBackupMailboxPermissions},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IsBackupArchiveMailbox},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${FolderCondition},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${FolderConditionValue},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Int64]]
        ${EarlierThan},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Int64]]
        ${LaterThan},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${ItemConflictResolution},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${EnableSyncDeletion},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${EnableReplaceEmailAddress},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${EnableArchiveDateFilter},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Int64]]
        ${ArchiveDateFilter},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${EnableReplaceMeetingLink},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${DestinationFolder},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${EmailSensitivityLabel},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${UserMappingProfileId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${EmailLabelMappingProfileId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject[]]
        ${UserMappingRules},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${AutoProvisionArchiveMailbox},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${MigrateOOFSettings},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${MigrateAllSubFoldersAndTheirContents},
        [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 => FlyExchangePolicyCreationModel' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug


        $PSO = [PSCustomObject]@{
            "backupObjects" = ${BackupObjects}
            "isBackupMailboxPermissions" = ${IsBackupMailboxPermissions}
            "isBackupArchiveMailbox" = ${IsBackupArchiveMailbox}
            "folderCondition" = ${FolderCondition}
            "folderConditionValue" = ${FolderConditionValue}
            "earlierThan" = ${EarlierThan}
            "laterThan" = ${LaterThan}
            "itemConflictResolution" = ${ItemConflictResolution}
            "enableSyncDeletion" = ${EnableSyncDeletion}
            "enableReplaceEmailAddress" = ${EnableReplaceEmailAddress}
            "enableArchiveDateFilter" = ${EnableArchiveDateFilter}
            "archiveDateFilter" = ${ArchiveDateFilter}
            "enableReplaceMeetingLink" = ${EnableReplaceMeetingLink}
            "destinationFolder" = ${DestinationFolder}
            "emailSensitivityLabel" = ${EmailSensitivityLabel}
            "userMappingProfileId" = ${UserMappingProfileId}
            "emailLabelMappingProfileId" = ${EmailLabelMappingProfileId}
            "userMappingRules" = ${UserMappingRules}
            "autoProvisionArchiveMailbox" = ${AutoProvisionArchiveMailbox}
            "migrateOOFSettings" = ${MigrateOOFSettings}
            "migrateAllSubFoldersAndTheirContents" = ${MigrateAllSubFoldersAndTheirContents}
            "name" = ${Name}
            "description" = ${Description}
            "migrationModuleType" = ${MigrationModuleType}
            "notification" = ${Notification}
            "isDefault" = ${IsDefault}
            "customizeFeatures" = ${CustomizeFeatures}
        }

        return $PSO
    }
}

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

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in FlyExchangePolicyCreationModel
        $AllProperties = ("backupObjects", "isBackupMailboxPermissions", "isBackupArchiveMailbox", "folderCondition", "folderConditionValue", "earlierThan", "laterThan", "itemConflictResolution", "enableSyncDeletion", "enableReplaceEmailAddress", "enableArchiveDateFilter", "archiveDateFilter", "enableReplaceMeetingLink", "destinationFolder", "emailSensitivityLabel", "userMappingProfileId", "emailLabelMappingProfileId", "userMappingRules", "autoProvisionArchiveMailbox", "migrateOOFSettings", "migrateAllSubFoldersAndTheirContents", "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 "backupObjects"))) { #optional property not found
            $BackupObjects = $null
        } else {
            $BackupObjects = $JsonParameters.PSobject.Properties["backupObjects"].value
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "emailSensitivityLabel"))) { #optional property not found
            $EmailSensitivityLabel = $null
        } else {
            $EmailSensitivityLabel = $JsonParameters.PSobject.Properties["emailSensitivityLabel"].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 "emailLabelMappingProfileId"))) { #optional property not found
            $EmailLabelMappingProfileId = $null
        } else {
            $EmailLabelMappingProfileId = $JsonParameters.PSobject.Properties["emailLabelMappingProfileId"].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 "autoProvisionArchiveMailbox"))) { #optional property not found
            $AutoProvisionArchiveMailbox = $null
        } else {
            $AutoProvisionArchiveMailbox = $JsonParameters.PSobject.Properties["autoProvisionArchiveMailbox"].value
        }

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

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "migrateAllSubFoldersAndTheirContents"))) { #optional property not found
            $MigrateAllSubFoldersAndTheirContents = $null
        } else {
            $MigrateAllSubFoldersAndTheirContents = $JsonParameters.PSobject.Properties["migrateAllSubFoldersAndTheirContents"].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]@{
            "backupObjects" = ${BackupObjects}
            "isBackupMailboxPermissions" = ${IsBackupMailboxPermissions}
            "isBackupArchiveMailbox" = ${IsBackupArchiveMailbox}
            "folderCondition" = ${FolderCondition}
            "folderConditionValue" = ${FolderConditionValue}
            "earlierThan" = ${EarlierThan}
            "laterThan" = ${LaterThan}
            "itemConflictResolution" = ${ItemConflictResolution}
            "enableSyncDeletion" = ${EnableSyncDeletion}
            "enableReplaceEmailAddress" = ${EnableReplaceEmailAddress}
            "enableArchiveDateFilter" = ${EnableArchiveDateFilter}
            "archiveDateFilter" = ${ArchiveDateFilter}
            "enableReplaceMeetingLink" = ${EnableReplaceMeetingLink}
            "destinationFolder" = ${DestinationFolder}
            "emailSensitivityLabel" = ${EmailSensitivityLabel}
            "userMappingProfileId" = ${UserMappingProfileId}
            "emailLabelMappingProfileId" = ${EmailLabelMappingProfileId}
            "userMappingRules" = ${UserMappingRules}
            "autoProvisionArchiveMailbox" = ${AutoProvisionArchiveMailbox}
            "migrateOOFSettings" = ${MigrateOOFSettings}
            "migrateAllSubFoldersAndTheirContents" = ${MigrateAllSubFoldersAndTheirContents}
            "name" = ${Name}
            "description" = ${Description}
            "migrationModuleType" = ${MigrationModuleType}
            "notification" = ${Notification}
            "isDefault" = ${IsDefault}
            "customizeFeatures" = ${CustomizeFeatures}
        }

        return $PSO
    }

}