Public/Set-MITFolderMaintenance.ps1

function Set-MITFolderMaintenance {
    <#
    .SYNOPSIS
        Change a MOVEit Transfer Folder Maintenance Setting(s)
    .LINK
        Change Automated Maintenance Settings
        https://docs.ipswitch.com/MOVEit/Transfer2021/Api/Rest/#operation/PATCHapi/v1/folders/{Id}/maintenance-1.0
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true,
                    Position=0,
                    ValueFromPipelineByPropertyName)]
        [ValidateNotNullOrEmpty()]
        [Alias('Id')]
        [string]$FolderId,
        
        # Folder Quota params
        [Parameter()]
        [int64]$Quota,

        [Parameter()]
        [ValidateSet('KB', 'MB')]
        [string]$QuotaLevel,

        [Parameter()]
        [bool]$ApplyToFilesInSubfolders,

        [Parameter()]
        [int32]$DisplayNewFilesForDays,

        [Parameter()]
        [bool]$ApplyToSubfolders,

        # Folder Cleanup params
        [Parameter()]
        [int32]$DeleteEmptySubfoldersAfterDays,

        [Parameter()]
        [int32]$DeleteOldFilesAfterDays,

        [Parameter()]
        [bool]$IsCleanupEnabled
    )

    try {
        # Confirm the token, refreshing if necessary
        Confirm-MITToken

        # Set the Uri for this request
        $uri = "$script:BaseUri/folders/$FolderId/maintenance"
                    
        # Set the request headers
        $headers = @{
            Accept = "application/json"
            Authorization = "Bearer $($script:Token.AccessToken)"        
        }

        # Build the request body
        $body = @{}

        switch ($PSBoundParameters.Keys) {
            Quota {
                if (-not $body['folderQuota']) { $body['folderQuota'] = @{} }
                $body['folderQuota']['quota'] = $Quota
            }
            QuotaLevel {
                if (-not $body['folderQuota']) { $body['folderQuota'] = @{} }
                $body['folderQuota']['quotaLevel'] = $QuotaLevel
            }
            ApplyToFilesInSubfolders {
                if (-not $body['folderQuota']) { $body['folderQuota'] = @{} }
                $body['folderQuota']['applyToFilesInSubfolders'] = $ApplyToFilesInSubfolders
            }
            DisplayNewFilesForDays { $body['displayNewFilesForDays'] = $DisplayNewFilesForDays}
            ApplyToSubfolders { $body['applyToSubfolders'] = $ApplyToSubfolders}
            DeleteEmptySubfoldersAfterDays {
                if (-not $body['folderCleanup']) { $body['folderCleanup'] = @{} }
                $body['folderCleanup']['deleteEmptySubfoldersAfterDays'] = $DeleteEmptySubfoldersAfterDays
            }
            DeleteOldFilesAfterDays { 
                if (-not $body['folderCleanup']) { $body['folderCleanup'] = @{} }
                $body['folderCleanup']['deleteOldFilesAfterDays'] = $DeleteOldFilesAfterDays
            }
            IsCleanupEnabled { 
                if (-not $body['folderCleanup']) { $body['folderCleanup'] = @{} }
                $body['folderCleanup']['isCleanupEnabled'] = $IsCleanupEnabled
            }
        }
                
        # Setup the params to splat to IRM
        $irmParams = @{
            Uri = $uri
            Method = 'Patch'
            Headers = $headers
            ContentType = 'application/json'
            Body = ($body | ConvertTo-Json)
        }

        # Send the request and output the response
        $response = Invoke-RestMethod @irmParams
        $response | Write-MITResponse # -TypeName 'MITFolderSimple'
    }
    catch {
        $PSCmdlet.ThrowTerminatingError($PSItem)
    }    
}