Functions/category-service/Get-vROCategoryPermission.psm1

function Get-vROCategoryPermission {
<#
    .SYNOPSIS
    Get vRO Category Permissions

    .DESCRIPTION
    Get vRO Category Permissions

    .PARAMETER Id
    Category Id

    .INPUTS
    System.String

    .OUTPUTS
    System.Management.Automation.PSObject.

    .EXAMPLE
    Get-vROCategoryPermission -Id '40281e8654ddec6201553af63677146e'

    .EXAMPLE
    Get-vROCategory -Id '40281e8654ddec6201553af63677146e' | Get-vROCategoryPermission
#>

[CmdletBinding()][OutputType('System.Management.Automation.PSObject')]

    Param
    (   
    
    [parameter(Mandatory=$true,ValueFromPipeline,ValueFromPipelinebyPropertyName=$true)]
    [String[]]$Id

    )

    begin {

    }

    process{

        try {

            foreach ($CategoryId in $Id){

                # --- Send REST call and process results
                $URI = "/vco/api/categories/$($CategoryId)/permissions"

                $Category = Invoke-vRORestMethod -Method Get -Uri $URI -Verbose:$VerbosePreference

                foreach ($Permission in $Category.permissions){

                    $Rights = @()

                    switch -regex ($Permission.permission.rights)
                    {
                        "[r]" {$Rights += "View"}
                        "[x]" {$Rights += "Execute"}
                        "[i]" {$Rights += "Inspect"}
                        "[c]" {$Rights += "Edit"}
                        "[a]" {$Rights += "Admin"}

                        Default {}
                    }

                    [pscustomobject]@{                
                    
                        Principal = $Permission.permission.principal
                        Rights = $Rights
                        CategoryID = $CategoryId
                        CategoryHref = $Permission.permission.href
                    }
                }
            }
        }
        catch [Exception]{
        
            throw
        }
    }

    end {

    }
}