Functions/Get-vRAEntitledCatalogItem.psm1
function Get-vRAEntitledCatalogItem { <# .SYNOPSIS Get the a catalog item that the user is entitled to see .DESCRIPTION API for administrators to interact with catalog items that they are entitled to. Consumer Entitled CatalogItem(s) are basically catalog items: - in an active state. - the current user has the right to consume. - the current user is entitled to consume. - associated to a service. .PARAMETER Name The name of the catalog item .PARAMETER Limit The number of entries returned per page from the API. This has a default value of 100. .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject .EXAMPLE Get-vRAEntitledCatalogItem .EXAMPLE Get-vRAEntitledCatalogItem -Limit 9999 .EXAMPLE Get-vRAEntitledCatalogItem -Id dab4e578-57c5-4a30-b3b7-2a5cefa52e9e .EXAMPLE Get-vRAEntitledCatalogItem -Name Centos_Template #> [CmdletBinding(DefaultParameterSetName="Standard")][OutputType('System.Management.Automation.PSObject')] Param ( [parameter(Mandatory=$true,ValueFromPipeline=$false,ParameterSetName="ByID")] [ValidateNotNullOrEmpty()] [String[]]$Id, [parameter(Mandatory=$true,ValueFromPipeline=$false,ParameterSetName="ByName")] [ValidateNotNullOrEmpty()] [String[]]$Name, [parameter(Mandatory=$false,ValueFromPipeline=$false)] [ValidateNotNullOrEmpty()] [String]$Limit = "100" ) try { switch ($PsCmdlet.ParameterSetName) { # --- Get catalog item by id 'ById' { foreach ($EntitledCatalogItemId in $Id) { $URI = "/catalog-service/api/consumer/entitledCatalogItems/$($EntitledCatalogItemId)" Write-Verbose -Message "Preparing GET to $($URI)" $Response = Invoke-vRARestMethod -Method GET -URI $URI Write-Verbose -Message "SUCCESS" [pscustomobject] @{ Id = $Response.catalogItem.id Name = $Response.catalogItem.name Description = $Response.catalogItem.description Status = $Response.catalogItem.status IsNoteworthy = $Response.catalogItem.isNoteworthy DateCreated = $Response.catalogItem.dateCreated LastUpdatedDate = $Response.catalogItem.lastUpdatedDate Organization = $Response.catalogItem.organization OutputResourceTypeRef = $Response.catalogItem.outputResourceTypeRef ProviderBinding = $Response.catalogItem.providerBinding ServiceRef = $Response.catalogItem.serviceRef Quota = $Response.catalogItemquota Version = $Response.catalogItem.version Requestable = $Response.catalogItem.requestable Callbacks = $Response.catalogItem.callbacks CatalogItemTypeRef = $Response.catalogItem.catalogitemTypeRef Forms = $Response.catalogItem.forms IconId = $Response.catalogItem.iconId EntitledOrganizations = $Response.entitledOrganizations } } break } # --- Get catalog item by name 'ByName' { foreach ($EntitledCatalogItemName in $Name) { $URI = "/catalog-service/api/consumer/entitledCatalogItems?`$filter=name%20eq%20'$($EntitledCatalogItemName)'" Write-Verbose -Message "Preparing GET to $($URI)" $Response = Invoke-vRARestMethod -Method GET -URI "$($URI)" Write-Verbose -Message "SUCCESS" if ($Response.content.Length -eq 0) { throw "Could not find catalog item with name: $($EntitledCatalogItemName)" } [pscustomobject] @{ Id = $Response.content.catalogItem.id Name = $Response.content.catalogItem.name Description = $Response.content.catalogItem.description Status = $Response.content.catalogItem.status IsNoteworthy = $Response.content.catalogItem.isNoteworthy DateCreated = $Response.content.catalogItem.dateCreated LastUpdatedDate = $Response.content.catalogItem.lastUpdatedDate Organization = $Response.content.catalogItem.organization OutputResourceTypeRef = $Response.content.catalogItem.outputResourceTypeRef ProviderBinding = $Response.content.catalogItem.providerBinding ServiceRef = $Response.content.catalogItem.serviceRef Quota = $Response.content.catalogItem.quota Version = $Response.content.catalogItem.version Requestable = $Response.content.catalogItem.requestable Callbacks = $Response.content.catalogItem.callbacks CatalogItemTypeRef = $Response.content.catalogItem.catalogitemTypeRef Forms = $Response.content.catalogItem.forms IconId = $Response.content.catalogItem.iconId EntitledOrganizations = $Response.content.entitledOrganizations } } break } # --- No parameters passed so return all catalog items 'Standard' { $URI = "/catalog-service/api/consumer/entitledCatalogItems?limit=$($Limit)" Write-Verbose -Message "Preparing GET to $($URI)" $Response = Invoke-vRARestMethod -Method GET -URI $URI Write-Verbose -Message "SUCCESS" Write-Verbose -Message "Response contains $($Response.content.Length) records" foreach ($CatalogItem in $Response.content) { [pscustomobject] @{ Id = $CatalogItem.catalogItem.id Name = $CatalogItem.catalogItem.name Description = $CatalogItem.catalogItem.description Status = $CatalogItem.catalogItem.status IsNoteworthy = $CatalogItem.catalogItem.isNoteworthy DateCreated = $CatalogItem.catalogItem.dateCreated LastUpdatedDate = $CatalogItem.catalogItem.lastUpdatedDate Organization = $CatalogItem.catalogItem.organization OutputResourceTypeRef = $CatalogItem.catalogItem.outputResourceTypeRef ProviderBinding = $CatalogItem.catalogItem.providerBinding ServiceRef = $CatalogItem.catalogItem.serviceRef Quota = $CatalogItem.catalogItem.quota Version = $CatalogItem.catalogItem.version Requestable = $CatalogItem.catalogItem.requestable Callbacks = $CatalogItem.catalogItem.callbacks CatalogItemTypeRef = $CatalogItem.catalogItem.catalogitemTypeRef Forms = $CatalogItem.catalogItem.forms IconId = $CatalogItem.catalogItem.iconId EntitledOrganizations = $CatalogItem.entitledOrganizations } } break } } } catch [Exception]{ throw } } |