vRA 6.1 API – Catalog Requests

In the previous post on vRA APIs, we took a look at authentication and getting a bearer token. Some questions have come up for a local project around how we can enumerate the vRA catalog, and then subsequently request something via the API so here we are.

Example 1.1 – Enumerating the Catalog

Headers:

Content-Type: application/json

Accept: application/json

Authorization: Bearer (as captured per the previous post)

Request:

GET https:///catalog-service/api/consumer/entitledCatalogItems

Request Body:

Not Required

 

Catalog Enumeration

Example 2.1 Requesting a Catalog Item

Request:

POST https:///catalog-service/api/consumer/requests

Request Body:

{
"@type" : "CatalogItemRequest",
"catalogItemRef" : {
"id" : "ccd559fc-9d9e-454f-af1c-2d9f9f42fdcc"
},
"organization" : {
"tenantRef" : "vsphere.local",
"subtenantRef" : "91704cb6-d377-4b48-a80d-6aa074165118"
},
"requestedFor" : "gorchard@melb.vmware.local",
"state" : "SUBMITTED",
"requestNumber" : 0,
"requestData" : {
"entries" : [
{
"key" : "provider-blueprintId",
"value" : {
"type" : "string",
"value" : "1b568297-3d9c-4d72-b28b-6f00c1aadf3b"
}
},
{
"key" : "provider-provisioningGroupId",
"value" : {
"type" : "string",
"value" : "91704cb6-d377-4b48-a80d-6aa074165118"
}
},
{
"key" : "requestedFor",
"value" : {
"type" : "string",
"value" : "gorchard@melb.vmware.local"
}
},
{
"key" : "provider-SNOW.RequestNumber",
"value" : {
"type" : "string",
"value" : "123"
}
},
{
"key" : "provider-VirtualMachine.CPU.Count",
"value" : {
"type" : "integer",
"value" : 1
}
},
{
"key" : "provider-VirtualMachine.Memory.Size",
"value" : {
"type" : "integer",
"value" : 2048
}
},
{
"key" : "provider-VirtualMachine.Disk0.Size",
"value" : {
"type" : "string",
"value" : "16"
}
},
{
"key" : "provider-VirtualMachine.LeaseDays",
"value" : {
"type" : "integer",
"value" : 1
}
},
{
"key" : "provider-__Notes",
"value" : {
"type" : "string",
"value" : ""
}
},
{
"key" : "description",
"value" : {
"type" : "string",
"value" : "Request via the vRA consumer API"
}
},
{
"key" : "reasons",
"value" : {
"type" : "string",
"value" : ""
}
}
]
}
}

The sharp eyed amongst you will notice an item called “provider-SNOW.RequestNumber” amongst the blob there. This is a custom property on the blueprint called SNOW.RequestNumber. Adding additional (valid) custom properties for the blueprint into the request is as simple as adding “provider-” into your request as shown in the example above.

Custom Property

I’ll update this with my Python examples shortly.