Executing a vRO action via REST API
The ability to execute a vRO workflow or action via API is useful if you are using vRA or vRO as part of an overall CI/CD pipeline. If a vRA catalog item uses vRO actions to filter or set values on a custom form how can this be done if the vRA catalog item will be requested via REST.
In the example below I have a simple action that takes two inputs:
- firstName – Type:String
- secondName – Type:String
In order to be able to execute a vRO action you need to submit basic auth credentials. This will require the user account to be a member of the vco-admins group in vRO. This can either be a local user or an Active Directory user if vRA has been configured to integrate with Active Directory
The process for being able to execute the action via REST is a three part step. Part 1 is to determine the ID of the action that you wish to call. Execute the following operation:
GET - https://vro-fqdn/vco/api/actions
The result will be a large array of actions that looks something like this:
{ "link": [ { "attributes": [ { "value": "d7e461f6-b88f-4f63-a2cc-7f3c76d1bd19", "name": "id" }, { "value": "isBlocking", "name": "name" }, { "name": "description" }, { "value": "com.vmware.library.vcaccafe.workflow.subscription/isBlocking", "name": "fqn" }, { "value": "0.0.0", "name": "version" } ], .......
You’ll need to process this array to search for the name of the action that you wish to execute.
Part 2 is to retrieve the inputs for the action which is achieved via the following REST operation:
GET - https://vro-fqdn/vco/api/actions/{actionid}
The result will look something like this:
{ "href": "https://192.168.1.26:443/vco/api/actions/278a1622-1924-4f37-bb24-0c5d36346ae9/", "relations": { "link": [ { "href": "https://192.168.1.26:443/vco/api/actions/com.cloudkindergarten.examples/executedByApi/", "rel": "alternate" }, { "href": "https://192.168.1.26:443/vco/api/actions/278a1622-1924-4f37-bb24-0c5d36346ae9/permissions/", "rel": "permissions" }, { "href": "https://192.168.1.26:443/vco/api/actions/278a1622-1924-4f37-bb24-0c5d36346ae9/executions/", "rel": "executions" } ] }, "id": "278a1622-1924-4f37-bb24-0c5d36346ae9", "output-type": "string", "name": "executedByApi", "description": "", "version": "0.0.0", "fqn": "com.cloudkindergarten.examples/executedByApi", "script": "var fullName = (firstName + \" \" + secondName);\nreturn fullName;", "input-parameters": [ { "description": "", "type": "string", "name": "firstName" }, { "description": "", "type": "string", "name": "secondName" } ] }
From this we can see that action is expecting two input parameters; firstName and secondName both of type string.
Part 3 is to execute this action. We do this by using the following body content
{"parameters": [ { "value": {"string":{ "value": "Andy"}}, "type": "string", "name": "firstName", "scope": "local" }, { "value":{"string":{"value": "Davies"}}, "type": "string", "name": "secondName", "scope": "local" } ] }
This is then executed with the REST Operation:
POST https://{vro-fqdn}/vco/api/actions/{actionid}/executions/
The response will hopefully be the returned value from the action. In this case the full name of the person:
{ "value": { "string": { "value": "Andy Davies" } }, "type": "string" }