I would like to find the catalog request for a given request id. This is what I have so far:
//var cafeRequests = vCACCAFECatalogConsumerRequestService.getRequests() if ( vcacCafeHost == null ){ var vcacCafeHosts = Server.findAllForType("vCACCAFE:VCACHost"); if ( vcacCafeHosts == null ) { throw( "vcacCafeHosts is null." ) } else { if ( Array.isArray( vcacCafeHosts ) ) { } else { throw( "ERROR: vcacHosts is not an array." ) } } if ( vcacCafeHosts.length == 1 ){ var cafeHost = vcacCafeHosts[ 0 ] var vraInstance = cafeHost.url.split( "/" )[2] } else { throw "ERROR: Did not find exactly one vCACCAFE:VCACHost." } } else { var cafeHost = vcacCafeHost var vraInstance = cafeHost.url.split( "/" )[2] } System.log( "vraInstance = " + vraInstance ) var vcacCafeServiceName = vCACCAFEServicesEnum.CATALOG_PROVIDER_SERVICE System.log( "vcacCafeServiceName = " + vcacCafeServiceName ) var client = cafeHost.createRestClient( vcacCafeServiceName ); System.log( "client = " + client + ", object type = " + System.getObjectType( client ) + ", object class name = " + System.getObjectClassName( client ) ) var clientUrl = client.getUrl() System.log( "clientUrl = " + clientUrl ) var resourceUrl = "consumer/requests/" + requestId System.log( "resourceUrl = " + resourceUrl ) try{ var allCatalogProviderServiceResponse = client.get( resourceUrl ); } catch (err) { System.error( "ERROR: client.get( " + resourceUrl + " ). err = " + err ) System.log( "Object.keys( err ) = " + Object.keys( err ) ) } if ( allCatalogProviderServiceResponse == null || allCatalogProviderServiceResponse || undefined ){ throw "allCatalogProviderServiceResponse is null or undefined." } var CatalogProviderServiceData = allCatalogProviderServiceResponse.getBodyAsJson(); System.log( "CatalogProviderServiceData = " + CatalogProviderServiceData + ", object type = " + System.getObjectType( CatalogProviderServiceData ) + ", object class name = " + System.getObjectClassName( CatalogProviderServiceData ) ) //System.log( "CatalogProviderServiceData.metadata = " + CatalogProviderServiceData.metadata + ", object type = " + System.getObjectType( CatalogProviderServiceData.metadata ) + ", object class name = " + System.getObjectClassName( CatalogProviderServiceData.metadata ) ) var catalogProviderServiceDataMetadata = CatalogProviderServiceData.metadata var catalogProviderServiceDataMetadataKeys = Object.keys( catalogProviderServiceDataMetadata ) System.log( "catalogProviderServiceDataMetadataKeys = " + catalogProviderServiceDataMetadataKeys + ", object type = " + System.getObjectType( catalogProviderServiceDataMetadataKeys ) + ", object class name = " + System.getObjectClassName( catalogProviderServiceDataMetadataKeys ) ) for( var catalogProviderServiceDataMetadataKey in catalogProviderServiceDataMetadataKeys ) { System.log( "catalogProviderServiceDataMetadata[ " + catalogProviderServiceDataMetadataKeys[ catalogProviderServiceDataMetadataKey ] + " ] = " + catalogProviderServiceDataMetadata[ catalogProviderServiceDataMetadataKeys[ catalogProviderServiceDataMetadataKey ] ] ) }
the result is
[2019-02-26 17:42:21.887] [I] vraInstance = <FQDN of vRA> [2019-02-26 17:42:21.889] [I] vcacCafeServiceName = com.vmware.csp.core.cafe.catalog.api [2019-02-26 17:42:21.903] [I] client = DynamicWrapper (Instance) : [vCACCAFERestClient]-[class com.vmware.o11n.plugin.vcac.model.cafe.CAFERestClient] -- VALUE : com.vmware.o11n.plugin.vcac.model.cafe.CAFERestClient@4928a8be, object type = null, object class name = vCACCAFERestClient [2019-02-26 17:42:21.906] [I] clientUrl = https://<FQDN of vRA>/catalog-service/api [2019-02-26 17:42:21.912] [I] resourceUrl = consumer/requests/9d156326e1594223850a2a62b12e00f8 [2019-02-26 17:42:22.020] [E] ERROR: client.get( consumer/requests/9d156326e1594223850a2a62b12e00f8 ). err = InternalError: Invalid argument. (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#38) [2019-02-26 17:42:22.021] [I] Object.keys( err ) = message,fileName,lineNumber,name,stack [2019-02-26 17:42:22.022] [E] Error in (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#45) allCatalogProviderServiceResponse is null or undefined. [2019-02-26 17:42:22.150] [E] Workflow execution stack: *** item: 'vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003/item1', state: 'failed', business state: 'null', exception: 'allCatalogProviderServiceResponse is null or undefined. (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#45)' workflow: 'vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003' (a5d041c9-eed6-4aa8-ad30-38c0ee93b561) | 'input': name=vcacCafeHost type=vCACCAFE:VCACHost value=null | 'input': name=requestId type=string value=9d156326e1594223850a2a62b12e00f8 | 'input': name=restQueryLimit type=number value=1.0 | 'input': name=restRequestPageMax type=number value=1.0 | 'no outputs' | 'no attributes' *** End of execution stack.
I have also tried using Postman (version 7.0.5) (https://{{vra-fqdn}}/catalog-service/api/consumer/requests ) and I get "HTTP Status 401 – Unauthorized" using an account that I know has access to the same vRA tenant. I know that the authentication is good as I have a sibling request (HTTPS://{{vra-fqdn}}:/vco/api/inventory/System/Actions/com.td.platformhosting.utils/) that does work and both inherit authorization from the same parent folder in Postman.
Unfortunately, I find REST very confusing. What I have found so far (https://code.vmware.com/apis/175/vra-catalog , https://grantorchard.com/vcac/extensibility/learning-vra-api-part-3-consumer-api-requesting-catalog-item/ ) doesn't seem to be helping.
How do I find the catalog request for a given request ID?