Skip to main content

Account Endpoints

List Accounts

Lists all Frame accounts.

GET/accounts/

Request Parameters

NameDescriptionParam TypeData TypeRequired
nameName or portion of name you would like to use for searching/filtering.Search QuerystringFalse
organization_idFrame Organization ID you'd would like to use for searching/filteringSearch QuerystringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts"

List Account Details

Returns details of an account.

GET/accounts/:account_id

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/31cbf42c-8767-486c-9ed3-d6a804q7cfe1"

List Account Availability Zones

Lists all availability zones of a Frame account.

GET/accounts/:id/availability_zones

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/availability_zones"

Get Account User Volumes Settings

Returns user volumes settings of a Frame account.

GET/accounts/:id/user_volumes_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/user_volumes_settings"

Get Account Domain Join Settings

Returns domain join settings of a Frame account.

GET/accounts/:id/domain_join_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/domain_join_settings"

Get Account General Settings

Returns general settings of a Frame account.

GET/accounts/:id/general_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/general_settings"

Get Account Session Settings

Returns session settings of a Frame account.

GET/accounts/:id/session_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/session_settings"

Update Account Enterprise Profiles

Updates enterprise profiles of a Frame account. (Should be used only if enabling enterprise profiles or updating its size. In case you want to disable enterprise profiles, you should use disable_enterprise_profiles endpoint instead.)

POST/accounts/:id/update_enterprise_profiles

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
user_profileA JSON object that includes values for the following properties: enabled of type boolean and size of type integerDataJSONTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/update_enterprise_profiles"
--data-raw '{
"user_profile": {
"enabled": true,
"size": 1
}
}'

Update Account Personal Drives

Updates personal drives of a Frame account. (Should be used only if enabling personal drives or updating its size. In case you want to disable personal drives, you should use disable_personal_drives endpoint instead.)

POST/accounts/:id/update_personal_drives

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
enabledBoolean which determines whether personal drives are enabledDataBooleanTrue
sizeInteger which determines size of personal drives if enabledDataIntegerFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/update_personal_drives"
--data-raw '{
"enabled": true,
"size": 1
}'

Disable Account Enterprise Profiles

Disables enterprise profiles of a Frame account and returns the pending task.

POST/accounts/:id/disable_enterprise_profiles

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
do_backupBoolean which determines whether new backups of existing enterprise profiles should be createdDataBooleanFalse
delete_all_backupsBoolean which determines whether existing backups should be deletedDataBooleanFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/disable_enterprise_profiles"
--data-raw '{
"do_backup": false,
"delete_all_backups": false
}'

Disable Account Personal Drives

Disables personal drives of a Frame account and returns the pending task.

POST/accounts/:id/disable_personal_drives

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
do_backupBoolean which determines whether new backups of existing enterprise profiles should be createdDataBooleanFalse
delete_all_backupsBoolean which determines whether existing backups should be deletedDataBooleanFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/disable_personal_drives"
--data-raw '{
"do_backup": false,
"delete_all_backups": false
}'

Update Account Domain Join Settings

Updates domain join settings of a Frame account and returns pending task.

POST/accounts/:id/update_domain_join_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
domain_nameDomain nameDataStringFalse
service_account_nameService account nameDataStringFalse
service_account_passwordService account passwordDataStringFalse
target_ouTarget OUDataStringFalse
dns_serversDNS serversDataStringFalse
logout_local_userBoolean which determines whether local user should be logged outDataBooleanFalse
domain_controller_ipDomain controller IPDataStringFalse
promote_user_to_local_adminBoolean which determines whether user should be promoted to local adminDataBooleanFalse
machine_name_prefixMachine name prefixDataStringFalse
sso_passthrough_enabledBoolean which determines whether SSO Passthrough is enabledDataBooleanFalse
delete_terminated_hostnamesBoolean which determines whether terminated hostnames should be deletedDataBooleanFalse
ad_typeAD typeDataStringFalse
enroll_intuneEnroll intune?DataBooleanFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/update_domain_join_settings"
--data-raw '{
"domain_name": "",
"service_account_name: "",
"service_account_password: "",
"target_ou": "",
"dns_servers": "",
"logout_local_user": false,
"domain_controller_ip": "",
"promote_user_to_local_admin": true,
"machine_name_prefix": "",
"sso_passthrough_enabled": true,
"delete_terminated_hostnames": false,
"ad_type": "",
"enroll_intune": false
}'

Update Account General Settings

Updates general settings of a Frame account.

POST/accounts/:id/update_general_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
is_terminal_banner_enabledBoolean which determines whether terminal banner is enabledDataBooleanTrue
terminal_banner_settingsA JSON object with string values "background_color", "color" and "message"DataJSONFalse
is_login_banner_enabledBoolean which determines whether login banner is enabledDataBooleanTrue
login_banner_settingsA JSON object with string values "title" and "message"DataJSONFalse
is_light_publish_enabledBoolean which determines whether light publish is enabledDataBooleanTrue
light_publish_settingsA JSON object with integer value "threshold"DataJSONFalse
host_name_prefixHost name prefixDataStringTrue
is_test_publish_enabledBoolean which determines whether test publish is enabledDataBooleanTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/update_general_settings"
--data-raw '{
"is_terminal_banner_enabled" true,
"terminal_banner_settings": {
"background_color": "#FFFFFF",
"color": "#000000",
"message": ""
},
"is_login_banner_enabled": true,
"login_banner_settings": {
"title": "",
"message": ""
},
"is_light_publish_enabled": true,
"light_publish_settings": {
"threshold": 1
},
"host_name_prefix": "",
"is_test_publish_enabled": false
}'

Update Account Session Settings

Updates session settings of a Frame account.

POST/accounts/:id/update_session_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
is_app_switching_enabledIs application switching enabled?DataBooleanTrue
is_microphone_enabledIs microphone enabled?DataBooleanTrue
is_camera_enabledIs camera enabled?DataBooleanFalse
is_usb_redirection_enabledIs USB redirection enabled?DataBooleanFalse
clipboard_integrationA JSON object with "is_enabled" boolean value and string value "direction" which has possible values: "local_to_remote", "remote_to_local" and "bidirectional"DataJSONTrue
is_download_enabledIs download enabled?DataBooleanTrue
is_cpu_display4k_enabledIs CPU display 4K enabled?DataBooleanTrue
is_upload_enabledIs upload enabled?DataBooleanTrue
is_print_enabledIs print enabled?DataBooleanTrue
reservation_timeout_secondsReservation timeout in secondsDataIntegerTrue
user_inactivity_timeout_minutesUser inactivity timeout in minutesDataIntegerTrue
idle_timeout_minutesIdle timeout in minutesDataIntegerTrue
max_session_duration_minutesMax session duration in minutesDataIntegerTrue
session_preparation_timeout_minutesSession preparation timeout in minutesDataIntegerTrue
max_bandwidth_kbpsMax bandwidth in KBPSDataIntegerTrue
max_frame_rate_fpsMax Frame rate in FPSDataIntegerTrue
max_video_bit_rate_mbpsMax video bit rate in MBPSDataIntegerTrue
max_audio_bit_rate_kbpsMax audio bit rate in KBPSDataIntegerTrue
yuv444Boolean which determines whether YUV444 feature is enabledDataBooleanTrue
scale_videoScale videoDataNumberTrue
max_video_quantizationMax video quantizationDataIntegerTrue
qos_rate_changeQOS rate changeDataIntegerTrue
is_grayscale_enabledIs grayscale enabled?DataBooleanTrue
is_webrtc_enabledIs webRTC enabled?DataBooleanTrue
video_buffer_length_msVideo buffer length in msDataIntegerTrue
is_settings_dialog_enabledIs settings dialog enabled?DataBooleanTrue
advanced_terminal_argumentsAdvanced terminal argumentsDataStringFalse
advanced_server_argumentsAdvanced server argumentsDataStringFalse
terminal_buildTerminal BuildDataStringFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/update_session_settings"
--data-raw '{
"session_settings": {
"is_webrtc_enabled": false,
"advanced_server_arguments": null,
"advanced_terminal_arguments": null,
"clipboard_integration": {
"direction": "bidirectional",
"is_enabled": true
},
"idle_timeout_minutes": 60,
"is_app_switching_enabled": true,
"is_camera_enabled": false,
"is_cpu_display4k_enabled": true,
"is_download_enabled": true,
"is_grayscale_enabled": false,
"is_microphone_enabled": false,
"is_print_enabled": true,
"is_settings_dialog_enabled": true,
"is_upload_enabled": true,
"is_usb_redirection_enabled": false,
"max_audio_bit_rate_kbps": 160,
"max_bandwidth_kbps": 0,
"max_frame_rate_fps": 20,
"max_session_duration_minutes": 0,
"max_video_bit_rate_mbps": 16.0,
"max_video_quantization": 42,
"qos_rate_change": 4,
"reservation_timeout_seconds": 600,
"scale_video": 1.0,
"session_preparation_timeout_minutes": 15,
"terminal_build": "latest",
"user_inactivity_timeout_minutes": 10,
"video_buffer_length_ms": 0,
"yuv444": false
}
}'

Publish a Sandbox

Starts the publish action for an account's Sandbox and returns the task ID.

POST/accounts/:account_id/publish

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/publish"

List Publish Tasks

Lists publishing tasks for the given account ID.

GET/accounts/:account_id/publish/tasks

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/publish/tasks"

Get Publish Status

Returns the publishing status for a given account ID and publish request ID.

GET/accounts/:account_id/publish/:task_id

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
task_idTask id of a publishURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/publish/${request_id}"

Cancel Publish

Returns details of an account.

DELETE/accounts/:account_id/publish/:task_id

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
task_idTask id of a publishURLStringTrue
curl -X DELETE \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/publish/${task_id}"

List Instance Types

Returns a list of available instance types for the account specified.

GET/accounts/:account_id/instance_types

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/instance_types"

Change Instance Type for a Persistent Desktop

Changes the instance type for a Persistent Desktop

POST/accounts/:account_id/servers/:server_id/update_persistent_desktop_instance_type

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLstringTrue
server_idFrame Server ID for the Persistent DesktopURLstringTrue
instance_type_idEndpoint request body payload ({"instance_type_id": "gateway-prod.61616"})Search QuerystringTrue
note

The instance type ID can be found by using the List Instance Types endpoint and specifying the id for the instance type you want to use

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{"instance_type_id" : "gateway-prod.61616" }'
"https://api.console.nutanix.com/v1/accounts/${account_id}/servers/reboot"

List Applications

Returns a list of applications for the account specified.

GET/accounts/:account_id/applications

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/applications"

List Session Reports

Returns a list of generated session reports.

note

You must "Enable Session Reports" in the General tab of the Account Settings for this endpoint to work. If you do not enable this feature, you will get an empty array and HTTP 200 response from your request.

GET/accounts/:account_id/session_reports

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/session_reports"

List Active Sessions

Returns a list of active sessions for all pools on a specified account.

GET/accounts/:account_id/active_sessions

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/active_sessions"

List Recent Sessions

Returns a list of sessions for a given period of time.

GET/accounts/:account_id/recent_sessions

Request Parameters

Parameter NameDescriptionParam TypeData TypeRequired
idFrame Account IDURLstringTrue
from_dateThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
to_dateThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/recent_sessions?from_date=2021-12-01T23:20:58.128Z&to_date=2021-12-25T23:20:58.128Z"

List Session Details

Returns information regarding a specific session.

GET/accounts/:account_id/sessions/:session_id/

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
session_idID of a sessionURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/sessions/${session_id}"

List Session Trails

Returns Session Trails for the Frame Account specified.

GET/accounts/:account_id/session-trails

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
searchFilters results if the provided string matches against Server ID, Session ID, email address, and a user's full name.Search QueryStringFalse
session_startThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringFalse
session_endThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringFalse
instance_typeFilters Session Trails based on a specific instance type ID.Search QueryStringFalse
pool_group_typeFilters Session Trails based on the pool group type (e.g. “production” vs “sandbox”).Search QueryStringFalse
pool_idFilters Session Trails based on provided instance type's pool ID.Search QueryStringFalse
offsetUsed to specify where to start the query. Must be used in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the “page size” of the query. Must be used in conjunction with the offset parameter.Search QueryInteger (String)False
orderSpecifies the order of the results. Use “asc” for ascending order, and “desc” for descending order.Search QueryStringFalse
order_bySpecifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc.Search QueryStringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/session-trails?limit=50&offset=0&order=desc&order_by=session_start"

List Audit Trails

Returns Audit Trails for an account, constrained by a date range and a number of ways to filter & search for granular queries.

GETaccounts/:account_id/audit-trails

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
searchFilters results if the provided string matches against a user's full name, email, idp, or the Audit Trail kind.Search QueryStringFalse
kindFilters Audit Trails by wildcard matching against the supplied string. For example, a kind of “launchpad” will return Audit Trails for both createLaunchpad and updateLaunchpad actions.Search QueryStringFalse
from_dateThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringFalse
to_dateThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringFalse
offsetUsed to specify where to start a Audit Trails query. Must be used in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the “page size” of the Audit Trails query. Must be used in conjunction with the offset parameter.Search QueryInteger (String)False
orderSpecifies the order of the results. Use “asc” for ascending order, and “desc” for descending order.Search QueryStringFalse
order_bySpecifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc.Search QueryStringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/audit-trails?search=jason.thompson@nutanix.com&kind=launchpad"

Start a Session

Starts a headless/clientless session. Use this endpoint to start a session without a browser or FrameApp. This is typically used for automation and custom workflows (Sandbox installers, CI/CD automations, etc).

Please note that you can use either a token or signed HTTP headers for authentication with this endpoint.

If you use a token for authentication, you will be able to modify metadata for the session (email, first name, last name, etc).

If you use a token, use the header "Authorization: Bearer token" instead of the signed headers.

Also note, if you use the signed HTTP headers (Instead of the token), the first and last name will show up as "X" in the audit logs respectively. Additionaly, your email address will reflect the API provider with a very cryptic looking address.

POST/sessions/start

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
terminal_configuration_idThe desired Launchpad Terminal Configuration IDSearch QueryStringTrue
optionsJSON object with multiple options to choose from (All optional)
{ "user_data": "string", "touch": true }

user_data passes a string into the remote Windows environment variable FRAME_USER_DATA

touch: if true enables touch controls to the session (Touch displays)
Search QueryStringFalse
curl -X POST \
-H "Authorization: Bearer ${token}" \
"https://api.console.nutanix.com/v1/sessions/start" \
--data-raw '{
"options": {
"user_data" : "Any string",
"touch" : "false"
}
}'

Stop a Session

Stops the specified session.

DELETE/accounts/:account_id/sessions/:session_id

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
session_idID of a sessionURLStringTrue
curl -X DELETE \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/sessions/${session_id}"

Get Sandbox Status

Returns the status of a Sandbox pool on a specified account.

GET/accounts/:account_id/sandbox/status

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/sandbox/status"

Start a Sandbox

Starts the Sandbox server on a specified account.

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
POST/accounts/:account_id/sandbox/start
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/sandbox/start"

Reboot a Sandbox

Reboots a Sandbox server on a specified account.

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
POST/accounts/:account_id/sandbox/reboot
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/sandbox/reboot"

Stop a Sandbox

Stops the Sandbox server on specified account.

POST/accounts/:account_id/sandbox/stop

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/sandbox/stop"

List Pools for an Account

GET/accounts/:account_id/pools

Request Parameters

NameDescriptionParam TypeData TypeRequired
idFrame Account ID.URLstringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/pools"

List Account's Overall Capacity Settings

Returns the current min, buffer, and max values configured for all pools/instance types in an account.

GET/accounts/:account_id/elasticity

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/elasticity"

List Persistent Desktop Capacity Settings

Returns the current Persistent Desktop capacity settings for an account. This includes values for number_of_backups_to_save, max_users, and keep_instances_running_for_new_users.

GET/accounts/:persistent_account_id/persistent_desktop_elasticity_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idFrame Account ID (must be a persistent).URLstringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/persistent_desktop_elasticity_settings"

List Persistent Desktop Backups for an Account

Returns a list of the Backups for Persistent Desktops in an account.

GET/accounts/:persistent_account_id/persistent_desktop_backups

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idFrame Account ID (must be a persistent).URLstringTrue
offsetUsed to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the "page size" of the query. Must be used in conjunction with the offset parameterSearch QueryInteger (String)False
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/persistent_desktop_backups"

List Persistent Desktops in an Account

Returns a list of the Persistent Desktops in an account.

GET/accounts/:persistent_account_id/persistent_desktop_servers

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idFrame Account ID (must be a persistent).URLstringTrue
offsetUsed to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the "page size" of the query. Must be used in conjunction with the offset parameterSearch QueryInteger (String)False
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/persistent_desktop_servers"

List Logged In Users

Lists all previously logged in users for an account (And the associated IDP).

note

This endpoint is required to reassign persistent desktops for persistent Frame Accounts. However, this endpoint can be used with any other account type.

GET/accounts/:account_id/logged_in_users

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLstringTrue
offsetUsed to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the "page size" of the query. Must be used in conjunction with the offset parameterSearch QueryInteger (String)False
searchUsed to search/filter for specific results from the returned list of logged in usersSearch QueryStringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/logged_in_users"

Unassign Persistent Desktop

Unassigns the user from their assigned Persistent Desktop server. This allows the administrator to assign that Persistent Desktop server to another user (or terminate the server).

POST/accounts/:persistent_account_id/servers/:server_external_id/unassign

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idFrame Account ID (must be a persistent).URLstringTrue
server_external_idFrame "external" server ID (found by querying account servers).URLstringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/servers/${persistent_server_id}/unassign"

Reassign Persistent Desktop

Reassigns a user to a particular Persistent Desktop server. Please note that the Persistent Desktop server should already be unassigned.

POST/accounts/:persistent_account_id/servers/:server_external_id/reassign

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idFrame Account ID (must be a persistent).URLstringTrue
server_external_idFrame "external" server ID (found by querying account servers).URLstringTrue
user_uuidFrame User's UUID (found by querying logged_in_users)URLstringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/servers/${persistent_server_id}/reassign"

Reboot a Server

Reboots the specified server.

POST/accounts/:account_id/servers/reboot

Request Parameters

NameDescriptionParam TypeData TypeRequired
server_idFrame Server ID.URLstringTrue
account_server_rebootServer reboot payload ({"force": false})Search QuerystringTrue
note

If force is set to true, the server will be rebooted immediately

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
"id" : "server_id",
"account_server_reboot": {
"force" : "false"
}
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/servers/reboot"

Start a Server

Starts the specified server.

POST/accounts/:account_id/servers/:server_id/start

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account ID.URLstringTrue
server_external_idServer External ID.URLstringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
"account_server_stop": {
"force" : "false"
}
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/servers/${server_id}/start"

Stop a Server

Shuts down the specified server.

POST/accounts/:account_id/servers/:server_id/stop

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account ID.URLstringTrue
server_external_idServer External ID.URLstringTrue
account_server_stopServer stop payload ({ "force": false})Search QuerystringTrue
note

If force is set to true, the server will be stopped immediately. This will not be considered a clean shutdown by the VM

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
"account_server_stop": {
"force" : "false"
}
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/servers/${server_id}/stop"

Terminate Server

Terminates the specified server.

POST/accounts/:persistent_account_id/servers/:server_external_id/terminate

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account ID.URLstringTrue
server_external_idFrame "external" server ID (found by querying account servers).URLstringTrue
forceIf set to true, the server will be terminated immediately. If set to false, it will terminate as soon as it's available.Search QuerybooleanTrue
danger

This is an irreversable action, use with caution!

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/servers/${server_id}/terminate?force=false"

List Production Pool Capacity Settings

Returns the current min, buffer, and max values configured for a specific pool.

GET/pools/:pool_id/elasticity_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
pool_idID of the Instance Type/pool you're getting settings for.URLstringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/pools/${pool_id}/elasticity_settings"

Set Production Pool Capacity Settings

Sets new min, buffer, or max values for a specific production pool. Frame immediately sets new values and orchestrates workloads to match these settings. You can the status of this operation using the returned task ID.

caution

Practice caution and make sure you understand the meanings of minimum, buffer, and maximum server elasticity values before setting them via API. Incorrectly setting these values can be expensive in regards to infrastructure costs and resources.

Please allow these tasks to complete ("DONE" status) before making another request for the same pool.

POST/pools/:pool_id/elasticity_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
pool_idID of the specific pool you'd like to set capacity settings forURLStringTrue
min_serversMinimum servers value for a production poolForm DataStringFalse
buffer_serversBuffer servers value for a production poolForm DataStringFalse
max_serversMaximum server capacity value for a production poolForm DataStringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/pools/${pool_id}/elasticity_settings" \
-F min_servers=5 \
-F buffer_servers=0 \
-F max_servers=80 \

Set Persistent Desktop Capacity Settings

Sets the current Persistent Desktop capacity settings for an account. This includes values for number_of_backups_to_save, max_users, and keep_instances_running_for_new_users.

caution

Practice caution with these values. For example, setting a lower max_users value below the current number of assigned persistent desktops will result in zero unassigned persistent desktops for new users. Incorrectly setting these values can be expensive in regards to infrastructure costs and resources.

Please allow these tasks to complete ("DONE" status) before making sending more capacity change requests.

POST/accounts/:persistent_account_id/persistent_desktop_elasticity_settings

Request Parameters

NameDescriptionParam TypeData TypeRequired
persistent_account_idID of your persistent Frame account.URLStringTrue
number_of_backups_to_saveLike it says, this value determines the number of persistent desktop backups to save for recovery.Form DataStringFalse
max_usersThis value is the maximum amount of persistent desktops you'd like to provision. Be mindful when lowering this value below the current number of assigned persistent desktops as that will result in zero unassigned persistent desktops for new users.Form DataStringTrue
keep_instances_running_for_new_usersIf true, unassigned persistent desktops will continue running until a new user connects and assigns it.Form DataBooleanTrue

For more information, reference our documentation about persistent desktop capacity settings.

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${persistent_account_id}/persistent_desktop_elasticity_settings" \
-F number_of_backups_to_save=2 \
-F max_users=20 \
-F keep_instances_running_for_new_users=false \

List Elasticity Logs

Returns logs for elasticity changes.

GET/accounts/:account_id/elasticity-logs

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
instance_type_nameFilters results based on the instance type's name. For example, if our account was hosted in AWS, we could filter by “t2.medium”, “t3.large”, etc.Search QueryStringTrue
from_dateThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
to_dateThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/elasticity-logs?instance_type_name=t2.medium&from_date=2021-03-20T23:59:59.128Z&to_date=2022-03-15T23:59:59.128Z"

List Account Roles

Returns an array of available roles and the associated permissions to an account

GET/accounts/:account_id/roles

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idNutanix Account IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/roles"

List Account User Activity

Returns basic user “activity” information for the specified Account constrained by a date range. You'll receive a total count of user activities, as well as a unique count of users for the given time period. Can be ordered by passing a string parameter as well as exclude specified user Identity Provider Ids.

GET/accounts/:account_id/user_activities

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
from_dateThe beginning date range for the query.Search QueryYYYY-MM-DD Date stringTrue
to_dateThe ending date range for the query.Search QueryYYYY-MM-DD Date stringTrue
orderSpecifies the order of the results. Use “asc” for ascending order, and “desc” for descending order.Search QueryStringFalse
order_bySpecifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc.Search QueryStringFalse
skip_user_idps[]User Identity Providers to skip.Search QueryArray (String)False
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_activities?from_date=${from_date}&to_date=${to_date}&skip_user_idps[]=example-okta-admins&skip_user_idps[]=example-okta-dev"

List Servers for an Account

Returns all workload servers for an account.

GET/accounts/:account_id/servers

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idYour Frame account ID.URLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/servers"

Clone a Sandbox

This endpoint will clone a Sandbox image from one account to the specified target account. The target account and source account must belong to the same Cloud Provider (e.g. clone from AWS to AWS, GCP to GCP, Azure to Azure). You can check the status of this operation using the returned task ID.

caution

This process will overwrite the Sandbox image for the target account which means all existing data will be lost. Be sure to perform a backup before continuing.

POST/accounts/:target_account_id/pools/:source_pool_id/clone

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
target_account_idThis is the target account IDURLStringTrue
source_pool_idThe source account's Sandbox pool IDURLStringTrue
join_domainOptional. Can be true or false. Determines whether Frame should attempt to join the domain after the Sandbox has been cloned.search QueryStringFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/pools/${source_pool_id}/clone"
-F join_domain=false

Get Task Status

Returns the current status of a provided task ID.

GET/accounts/:account_id/task/:task_id

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
task_idFrame Task IDURLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/task/${task_id}"

List Account Usage

Returns usage information for an account within a specified time period.

GET/accounts/:account_id/usage

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDSearch QueryStringTrue
from_dateThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
to_dateThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.Search QueryISO 8601 UTC StringTrue
resolution_typeWhat is the resolution type: by_hour, by_day, by_month, by_yearSearch QueryStringFalse
server_typeServer Type: by_hour, by_day, by_month, by_yearSearch QueryStringFalse
pool_idFrame Pool ID.Search QueryStringFalse
instance_type_idFrame Instance Type ID:Search QueryStringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
-H "resolution_type: by_day" \
"https://api.console.nutanix.com/v1/accounts/${id}/usage?from_date=2021-12-01T23:20:58.128Z&to_date=2021-12-25T23:20:58.128Z"

List Disk Volume Usage

Returns the disk volume usage for a specified account in a specified time period.

GET/accounts/:account_id/disk_volume_usage?params=...

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
idFrame Account IDURLStringTrue
from_dateThe beginning date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.URLISO 8601 UTC StringTrue
to_dateThe ending date range for the query. The date needs to be an ISO 8601 UTC string (with the “Z” suffix). For example: “2021-12-25T23:20:58.128Z”.URLISO 8601 UTC StringTrue
server_typeServer Type: by_hour, by_day, by_month, by_yearSearch QueryStringFalse
resolution_typeDefaults to by_hour, options: by_hour, by_day, by_month, by_yearSearch QueryStringFalse
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/disk_volume_usage?from_date=2020-01-01&to_date=2020-06-30&resolution_type=by_month"

List API Authorization Rules

Returns authorization rules for the account, organization, and customers, respectively.

  • GET/customers/:customer_id/api_authorization_rules
  • GET/organizations/:organization_id/api_authorization_rules
  • GET/accounts/:account_id/api_authorization_rules

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
entity_idFrame Account, Organization, or Customer ID.URLStringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/api_authorization_rules"

Create an Account

Accounts can be created within an organization with the following endpoint and parameters. Initiating an account creation will give you a task_id. You can check the status of the account creation via the task id.

Creating an account via our API requires a few parameters: cloud_service_external_id, data_center_external_id, sandbox_instance_type_id, image_family, master_image_id and disk_size. Look in each parameter's descriptions for where to find these values. If you're having trouble creating an account, please reach out to your Frame representative for assistance.

POST/accounts

Request Parameters

NameDescriptionParam TypeData TypeRequired
organization_idThe Frame Organization ID that the account will be created under.DataStringTrue
nameA unique name of the new account.DataStringTrue
url_slugA URL-friendly slug that will be used in URLs to access the account.DataStringTrue
cloud_service_external_idThis represents which Cloud Service (BYO) or Cloud Provider (Frame IaaS) the account will be created with. Use List Cloud Providers or List Cloud Services to locate these IDs. For example: gateway-prod.xx.DataStringTrue
data_center_external_idThis is the ID of a datacenter or “region” that will be used for the account. Use List Datacenters to locate these IDs. For example gateway-prod.xx.DataStringTrue
sandbox_instance_type_idThis ID is used to specify the instance type of the Sandbox. Use List Datacenters to find the Image Family and instance type you'd like, then use the instance type's ID here. For example: gateway-prod.xxDataStringTrue
image_familyThis references the name of an OS image that is supported by Frame. Use List Image Families to help find this value by each Image Family's name field.DataStringTrue
master_image_idRequired. ID of the master image that will be used to create the sandbox. Please query List Customer Master Images, or List Organization Master Images. For example: nutanix-prod.xxxxxx.DataStringTrue
disk_sizeOptional. Desired size of the sandbox image (in GiB). If this value is not provided, our system uses a default of 45 GiB. However, some operating systems images have different disk size requirements (e.g. Windows 2016 on AWS has a minimum of 64 GiB)DataStringFalse
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/" \
-F organization_id=d63caa09-5723-4ab9-a1ea-6659b349aabe \
-F 'name=API Example Account on AWS' \
-F url_slug=example-account \
-F cloud_service_external_id=gateway-prod.55 \
-F data_center_external_id=gateway-prod.15 \
-F image_family=FrameAWSWindows2016 \
-F sandbox_instance_type_id=gateway-prod.33 \
-F master_image_id=gateway-prod.38512 \
-F disk_size=64

Create an Account Launchpad

Creates a Launchpad based on supplied parameters.

POST/accounts/:account_id/launchpad

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idID of the account the Launchpad will be created under.URLStringTrue
nameName of the new Launchpad.DataStringTrue
url_slugA URL-friendly slug that will be used in URLs to access the LaunchpadDataStringTrue
kindThis determines the kind of Launchpad you want to create. You can create two kinds: application and desktopDataStringTrue
tip

You can combine launchpad creation with other automation APIs, such as onboarding apps to your sandbox, publishing, and toggling apps and instance types on a Launchpad. All of these endpoints are documented here.

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/launchpad" \
-F 'name=Windows 2019 Desktop' \
-F url_slug=w2019-desktop \
-F kind=desktop \

Onboard an Application

Applications can be automatically onboarded to Frame if the account already has the Application's executable present in it's system image, and if you have the app's basic information available, most notably the app's icon image. Please note that you must also enable the application on your Launchpad(s) and publish before your newly onboarded applications are visible to your users.

POST/account/:account_id/onboard_app

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
ApplicationA JSON object that includes string values for the following property names: namepathworking_directoryicon_base64, and arguments. For the icon, you must provide a base64 encoded Data URL of your icon image. Encoding your image in base64 can be done using various tools and programming languages, but there are also a large number of tools online to do this as well. Your Data URL it must include the proper syntax for your image or “media” type (png, jpeg, etc.). For example, converting a PNG to base64 would start with data:image/png;base64,.DataJSONTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/onboard_app"
--data-raw '{
"arguments": "",
"name": "Internet Explorer (Last Resort)",
"path": "C:\\Program Files\\Internet Explorer\\iexplore.exe",
"working_directory": "",
"icon_base64": "data:image/png;base64,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"
}'

Onboard Multiple Applications (Bulk process)

This is the process of onboarding multiple applications at once. Applications can be automatically onboarded to Frame if the account already has the Application's executable present in it's system image, and if you have the app's basic information available, most notably the app's icon image. Please note that you must also enable the application on your Launchpad(s) and publish before your newly onboarded applications are visible to your users.

POST/account/:account_id/onboard_applications

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Org the account will be created underURLStringTrue
applicationsA JSON object that includes string values for the following property names: namepathworking_directoryicon_base64, and arguments. For the icon, you must provide a base64 encoded Data URL of your icon image. Encoding your image in base64 can be done using various tools and programming languages, but there are also a large number of tools online to do this as well. Your Data URL it must include the proper syntax for your image or “media” type (png, jpeg, etc.). For example, converting a PNG to base64 would start with data:image/png;base64,.DataJSONTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${id}/onboard_applications"
--data-raw '{
"applications": [
{
"arguments": "",
"name": "Internet Explorer (Last Resort)",
"path": "C:\\Program Files\\Internet Explorer\\iexplore.exe",
"working_directory": "",
"icon_url": "https://url-to-your-icon.com/image.png"
},
// ... More applications
]
}'

List Launchpads

Returns a list of each Launchpad for an account, including their current settings, pools, and enabled applications if applicable.

GET/accounts/:account_id/launchpads

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Frame Account you'd like to list Launchpads for.URLStringTrue
offsetUsed to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the "page size" of the query. Must be used in conjunction with the offset parameterSearch QueryInteger (String)False
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/launchpads"

List Launchpad Details

Returns the requested Launchpad's current settings, pools, and enabled applications if applicable.

GET/accounts/:account_id/launchpads/:launchpad_id

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idID of the Frame Account.URLStringTrue
launchpad_idID of the Launchpad to query.URLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/launchpads/${launchpad_id}"

Toggle Launchpad Application

Once an application is onboarded to a Frame account, it can then be enabled/toggled on any Application Launchpad. You'll need to toggle an app on to enable visibility and access for your end-users by application ID.

POST/launchpads/:launchpad_id/toggle_application

Request Parameters

NameDescriptionParam TypeData TypeRequired
launchpad_idID of the Launchpad you'd like to enable an application for.URLStringTrue
ApplicationA JSON object that includes string values for the following property names: application_id, and order (optional).DataJSONTrue
tip

You can find your application IDs by querying GET/accounts/:account_id/applications

curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/launchpads/${launchpad_id}/toggle_application" \
--data-raw '{
"application_id": "79829dbb-ebcf-4927-9e29-5302ae26a385"
}'

Toggle Launchpad Pool

Once an pool is onboarded to a Frame account, it can then be enabled/toggled on any Application Launchpad. You'll need to toggle an app on to enable visibility and access for your end-users.

POST/launchpads/:launchpad_id/toggle_pool

Request Parameters

NameDescriptionParam TypeData TypeRequired
launchpad_idID of the Launchpad you'd like to enable an application for.URLStringTrue
ApplicationA JSON object that includes string values for the following property names: application_id, and order (optional). You can find your application IDs by querying account applications.DataJSONTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/launchpads/${launchpad_id}/toggle_pool" \
--data-raw '{
"pool_id": "c23b4ba1-c4d8-4bcf-8e62-d1f0d8477907"
}'

List User Volumes

Lists the user profile and personal disks associated with a Frame Account

GET/accounts/:account_id/user_volumes

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLstringTrue
offsetUsed to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter.Search QueryInteger (String)False
limitUsed to specify the "page size" of the query. Must be used in conjunction with the offset parameterSearch QueryInteger (String)False
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_volumes/?statuses=detached"

Delete User Volumes

Deletes onbe or more user volumes.

DELETE/accounts/:account_id/user_volumes

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLStringTrue
user_volume_idsList of User Volume IDsbodyjsonTrue
curl -X DELETE \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_volumnes"
--data-raw '{
"user_volume_ids" : ["gateway-prod.920000","gateway-prod.940154"]
}'

List User Volume Backups

Returns all user volumes associated with an account.

GET/accounts/:account_id/user_volumes_backups

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
account_idYour Frame account ID.URLStringTrue
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_volumes_backups"

Delete User Volume Backups

Deletes all user volumes that are specified in the user_volume_backup_ids array parameter. This is a bulk action and the API expects an array of volume backup IDs. The Account ID is not required for this call.

DELETE/accounts/:account_id/user_volumes_backups

Request Parameters

ParameterDescriptionParam TypeData TypeRequired
user_volume_backup_idsAn array of volume backup stringsBodyStringTrue
account_idYour Frame account ID.URLStringFalse
curl -X DELETE\
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
"user_volume_backup_ids" : ["gateway-prod.920000","gateway-prod.940154"]
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_volumes_backups"

Restore a User Volume from Backup

Restore a user volume from backup.

POST/accounts/:account_id/user_volume_backups/:user_volume_backup_id/restore

Request Parameters

NameDescriptionParam TypeData TypeRequired
account_idFrame Account IDURLstringTrue
user_volume_backup_idId of the backup (found by querying backups)URLstringTrue
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/accounts/${account_id}/user_volume_backups/${user_volume_backup_id}/restore"