Functions/packages-service/Get-vROPackage.psm1

function Get-vROPackage {
<#
    .SYNOPSIS
    Get vRO Packages

    .DESCRIPTION
    Get vRO Packages

    .PARAMETER Name
    Retrieve Package by Name

    .INPUTS
    System.String
    System.Switch

    .OUTPUTS
    System.Management.Automation.PSObject.

    .EXAMPLE
    Get-vROPackage

    .EXAMPLE
    Get-vROPackage -Name 'com.vmware.library.powershell'
#>

[CmdletBinding(DefaultParametersetName="All")][OutputType('System.Management.Automation.PSObject')]

    Param
    (   
    
    [parameter(Mandatory=$true,ParameterSetName="Name")]
    [String]$Name

    )

    try {

        # --- Send REST call and process results
        switch ($PsCmdlet.ParameterSetName) {

            "All"  { 
                
                $URI = "/vco/api/packages"

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

                foreach ($Package in $Packages.link){

                    [pscustomobject]@{                        
                    
                        Name = ($Package.attributes | Where-Object {$_.name -eq 'name'}).value
                        ID = ($Package.attributes | Where-Object {$_.name -eq 'id'}).value
                        Description = ($Package.attributes | Where-Object {$_.name -eq 'description'}).value
                        Href = $Package.href
                        Workflows = $null
                        Actions = $null
                    }
                }

                break
            }

            "Name"  {
            
                $URI = "/vco/api/packages/$($Name)/"

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

                [pscustomobject]@{                        
                    
                    Name = $Package.name
                    ID = $Package.id
                    Description = $Package.description
                    Href = $Package.href
                    Workflows = $Package.workflows
                    Actions = $Package.actions
               }

               break
            }
        }
    }
    catch [Exception]{
        
        throw
    }
}