Public/New-MIAResourceGroupAcl.ps1

function New-MIAResourceGroupAcl {
    <#
        .SYNOPSIS
        Create a MOVEit Automation Resource Group ACL
    #>

    [CmdletBinding()]
    [OutputType('MOVEit.MIA.ResourceGroupAcl')]
    param (
        [Parameter(Mandatory,
                    ValueFromPipeline,
                    ParameterSetName = 'Acl')]
        [PSTypeName('MOVEit.MIA.ResourceGroupAcl')]
        [PSObject]$Acl,

        [Parameter(Mandatory, ParameterSetName='Permissions')]
        [ValidateNotNullOrEmpty()]
        [string]$ResourceGroupName,

        [Parameter(Mandatory, ParameterSetName='Permissions')]
        [ValidateNotNull()]
        [string]$UserGroupName,


        [Parameter(Mandatory, ParameterSetName='Permissions')]
        [ValidateSet('TaskRun', 'TaskEditExisting', 'TaskAddEditDelete', 'HostAddEditDelete', 'ScriptAddEditDelete',
                    'SSLAddEditDelete', 'SSHAddEditDelete', 'PGPAddEditDelete')]
        [string[]]$Permissions,

        # Context
        [Parameter(Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [string]$Context = $script:DEFAULT_CONTEXT
    )

    begin {
        # Set the resource for this request
        $resource = "resourcegroups/acls"

        # Set the typeName for the response
        $typeName = 'MOVEit.MIA.ResourceGroupAcl'

        if ($PSCmdlet.ParameterSetName -eq 'Permissions') {
            $Acl = [PSCustomObject]@{
                Permissions = [PSCustomObject]@{
                    TaskRun             = [int]($Permissions -contains 'TaskRun')
                    TaskEditExisting    = [int]($Permissions -contains 'TaskEditExisting')
                    TaskAddEditDelete   = [int]($Permissions -contains 'TaskAddEditDelete')
                    HostAddEditDelete   = [int]($Permissions -contains 'HostAddEditDelete')
                    ScriptAddEditDelete = [int]($Permissions -contains 'ScriptAddEditDelete')
                    SSLAddEditDelete    = [int]($Permissions -contains 'SSLAddEditDelete')
                    SSHAddEditDelete    = [int]($Permissions -contains 'SSHAddEditDelete')
                    PGPAddEditDelete    = [int]($Permissions -contains 'PGPAddEditDelete')
                }
                ResourceGroupName       = $ResourceGroupName
                UserGroupName           = $UserGroupName
            }
        }
    }

    process {
        try {                
            # Build the request
            $params = @{
                Resource = "$resource"
                Method = 'Post'
                ContentType = 'application/json'
                Body = ($Acl | ConvertTo-Json -Depth 10)
            }

            # Invoke the request
            Invoke-MIARequest @params -Context $Context |
                Write-MIAResponse -Typename $typeName
        }
        catch {
            $PSCmdlet.ThrowTerminatingError($PSItem)
        }    
    }
}