VMware Cloud APIs
All VMware Cloud APIs require a valid authentication token; which can be obtained by issuing a
POST
:curl -s -X POST \ -H "Content-Type: application/json" \ https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize?refresh_token={refresh-token}
This CSP API is defined at: https://console.cloud.vmware.com/csp/gateway/am/api/swagger-ui.html#/Authentication/getAccessTokenByApiRefreshTokenUsingPOST
The
refresh_token
used to get a valid authentication token can be obtained after successful login to following URL via a web browser: https://console.cloud.vmware.com/csp/gateway/portal/#/user/tokens.Most VMware Cloud APIs require an org identifier. This can be obtained by issuing a
GET
on/vmc/api/orgs
and extracting theid
field
Getting Started with VMware Cloud on AWS REST APIs in 5 Minutes
For a high level overview of VMware Cloud on AWS APIs skip to the section About VMware Cloud on AWS API Programming below. To get you started quickly let’s dive into the necessary steps to enable you to begin calling APIs.
Step 1 - Obtain a VMware Cloud on AWS API Token
Calling APIs requires an API Token and you’ll need to navigate to the VMware Cloud on AWS portal and create a new API Token (requires login). Your API Token will be an alpha-numeric string.
Step 2 - Exchanging your API Token for an Access Token
With your API Token you’ll need to use the CSP Identity and Access Management group of APIs and fetch an “access token” which will be passed as part of each subsequent VMware Cloud on AWS API request. See below for more details on refresh tokens and handling expiration. Here’s the API you’ll need:
POST Exchange Scoped Token For Access (requires login)
Step 3 - Fetch your Organization ID
Your VMware Cloud on AWS account will be associated with one or more organizations and most APIs require an Organization ID. You can obtain your Organization ID from the VMware Cloud on AWS UI or using In this step we’ll look at fetching a list of your organizations including the orgID using this API:
Step 4 - Create your first SDDC
Now that you’ve authenticated and fetched your OrgId you’re ready to create your first SDDC. For that you’ll want to use this API:
POST Create SDDC
Step 5 - Polling the creation status of your SDDC
Creating a new SDDC can take awhile and the above API returns a Task structure which includes an “id” field that identifies the task. The structure also includes a “status” field which you can use to determine the state of task. Using the task “id” field you can poll to fetch up-to-date information on the status of the task using this API:
GET Get Task
Step 6 - Fetching details about your SDDC
Once your SDDC is created, using your Organization ID and your SDDC ID, you can fetch detailed information about it using this API:
GET Get SDDC
About VMware Cloud on AWS API Programming
The VMware Cloud on AWS APIs are organized around REST (“Representational State Transfer”) operations for performing create, retrieve, update and delete operations on VMware Cloud on AWS resources. For ease of use and security, REST builds on the standard web protocols HTTP and HTTPS, using the normal network ports 80 and 443, which are both open in most data centers, and uses standard HTTP response codes and verbs.
As a Cloud Service VMware Cloud on AWS APIs are not publicly available and require an API Token for programmatic use. You will need a VMware Cloud Services account to generate an API Token which you will use to programmatically call APIs from your programming language of choice.
Authentication and Authorization
When working with VMware Cloud on AWS APIs it’s important to understand the difference between authentication and authorization. As a user you authenticate to VMware Cloud Services with the username and password provided to you. However, as a developer you will create an OAuth application which will grant your program(s) authorization to call APIs.
Why API Tokens & OAuth Applications?
The reason we use API Tokens and OAuth applications is to separate end-user authentication and application authorization. By using API Tokens and OAuth applications you can achieve much greater control over the programmatic access granted to your cloud resources as well as scope the necessary access accordingly to avoid malicious use of APIs beyond the intended scope of the application.
You can learn about generating an API Token here.
Using API Tokens
Once you’ve generated an API Token you will use it to programmatically authorize access to APIs.
Before your application can begin calling APIs it must first make a POST request to the Cloud Services Platform (CSP) authorize API using your API Token passed with a content type of “application/x-www-form-urlencoded”. Here’s an example in curl:
The CSP authorize API call will return an access_token along with additional details associated with the API Token as follows:
In the response above the access_token will be a character string which you’ll need to include as an HTTP header on all subsequent API calls using the key “csp-auth-token
” as follows:
Also note, the access_token can be used in the API Explorer in the Developer Center on VMware Cloud on AWS.
Handling access_token Expiration
As part of the CSP authorize API you will receive an expires_in key indicating the number of seconds before the access_token will expire. After this expiration period subsequent calls to any VMware Cloud on AWS API will return the following error:
When an API call fails with the above error your script/program can request a new access_token using the refresh_token provided in the initial CSP authorize call (see above) and simply request a new access_token by re-issuing the authorize API using the provided refresh_token.