Skip to main content

Account Endpoints

List Accounts

Lists all Frame accounts.

GET /accounts/

Request Parameters

Name Description Param Type Data Type Required
name Name or portion of name you would like to use for searching/filtering. Search Query string False
organization_id Frame Organization ID you'd would like to use for searching/filtering Search Query string False
Request Example
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"
Response Example
[
  {
    "website": null,
    "name": "Aca Ivic Local",
    "last_publish": "2018-07-12T11:26:18.879116",
    "id": "b614cb6f-796b-4371-86cb-465d6dfc433b",
    "description": null,
    "active": true
  }
]
Status: 200 OK

List Account Details

Returns details of an account.

GET /accounts/:account_id

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "active": false,
  "description": null,
  "id": "31cbf42c-8767-486c-9ed3-d6a804q7cfe1",
  "inserted_at": "2020-02-27T19:08:53.892063Z",
  "kind": "frame",
  "last_publish": null,
  "name": "Example Account",
  "notes": null,
  "url_slug": "example-account-slug",
  "website": null
}
Status: 200 OK

List Account Availability Zones

Lists all availability zones of a Frame account.

GET /accounts/:id/availability_zones

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
["eu-central-1a", "eu-central-1b", "eu-central-1c"]
Status: 200 OK

List Account Upgrade Groups

Lists all upgrade groups of the account.

GET /accounts/:id/deployment_groups

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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}/deployment_groups"
Response Example
[
  {
    "id": "upgrade-group-1",
    "description": "Upgrade group 1 description",
    "not_selectable": false,
    "name": "Upgrade Group 1"
  }
]
Status: 200 OK

Get Account User Volumes Settings

Returns user volumes settings of a Frame account.

GET /accounts/:id/user_volumes_settings

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "user_personal_drive": {
    "enabled": true,
    "size": 1
  },
  "user_profile": {
    "enabled": true,
    "size": 1
  }
}
Status: 200 OK

Get Account Domain Join Settings

Returns domain join settings of a Frame account.

GET /accounts/:id/domain_join_settings

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "settings": {
    "promote_user_to_local_admin": false,
    "ad_type": "",
    "delete_terminated_hostnames": false,
    "dns_servers": "",
    "domain_controller_ip": "",
    "domain_name": "",
    "enroll_intune": false,
    "logout_local_user": false,
    "machine_name_prefix": "",
    "service_account_name": "",
    "service_account_password": "",
    "sso_passthrough_enabled": false,
    "target_ou": "",
    "vpc_cidr": ""
  },
  "is_domain_join_available": true,
  "is_domain_join_enabled": true
}
Status: 200 OK

Get Account General Settings

Returns general settings of a Frame account.

GET /accounts/:id/general_settings

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "light_publish_settings": {
    "threshold": 10
  },
  "is_light_publish_enabled": false,
  "host_name_prefix": "IF-",
  "is_generate_session_report_enabled": false,
  "is_test_publish_enabled": false,
  "auto_termination_time": null,
  "is_login_banner_enabled": true,
  "is_terminal_banner_enabled": true,
  "login_banner_settings": {
    "title": "",
    "message": ""
  },
  "terminal_banner_settings": {
    "message": "",
    "color": "#FFFFFF",
    "background_color": "#FFFFFF"
  }
}
Status: 200 OK

Get Account Session Settings

Returns session settings of a Frame account.

GET /accounts/:id/session_settings

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "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
}
Status: 200 OK

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

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
user_profile A JSON object that includes values for the following properties: enabled of type boolean and size of type integer Data JSON True
Request Example
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
  }
}'
Response Example
{
  "enabled": true,
  "size": 1
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
enabled Boolean which determines whether personal drives are enabled Data Boolean True
size Integer which determines size of personal drives if enabled Data Integer False
Request Example
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
  }'
Response Example
{
  "enabled": true,
  "size": 1
}
Status: 200 "OK"

Disable Account Enterprise Profiles

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

POST /accounts/:id/disable_enterprise_profiles

Request Parameters

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
do_backup Boolean which determines whether new backups of existing enterprise profiles should be created Data Boolean False
delete_all_backups Boolean which determines whether existing backups should be deleted Data Boolean False
Request Example
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
  }'
Response Example
{
  "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Publishing Sandbox to Production",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "c454d6da-fa30-4dc4-a533-6af2286d1754",
  "inserted_at": "2021-09-29T19:30:57.708442Z",
  "kind": "disable_enterprise_profiles",
  "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-09-29T19:30:57.708442Z"
}
Status: 200 "OK"

Disable Account Personal Drives

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

POST /accounts/:id/disable_personal_drives

Request Parameters

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
do_backup Boolean which determines whether new backups of existing enterprise profiles should be created Data Boolean False
delete_all_backups Boolean which determines whether existing backups should be deleted Data Boolean False
Request Example
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
  }'
Response Example
{
  "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Publishing Sandbox to Production",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "c454d6da-fa30-4dc4-a533-6af2286d1754",
  "inserted_at": "2021-09-29T19:30:57.708442Z",
  "kind": "disable_enterprise_profiles",
  "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-09-29T19:30:57.708442Z"
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
domain_name Domain name Data String False
service_account_name Service account name Data String False
service_account_password Service account password Data String False
target_ou Target OU Data String False
dns_servers DNS servers Data String False
logout_local_user Boolean which determines whether local user should be logged out Data Boolean False
domain_controller_ip Domain controller IP Data String False
promote_user_to_local_admin Boolean which determines whether user should be promoted to local admin Data Boolean False
machine_name_prefix Machine name prefix Data String False
sso_passthrough_enabled Boolean which determines whether SSO Passthrough is enabled Data Boolean False
delete_terminated_hostnames Boolean which determines whether terminated hostnames should be deleted Data Boolean False
ad_type AD type Data String False
enroll_intune Enroll intune? Data Boolean False
Request Example
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
  }'
Response Example
{
  "pending_request": {
    "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "display_name": "Publishing Sandbox to Production",
    "duration_sec": null,
    "external_resource_id": null,
    "finished_at": null,
    "id": "c454d6da-fa30-4dc4-a533-6af2286d1754",
    "inserted_at": "2021-09-29T19:30:57.708442Z",
    "kind": "disable_enterprise_profiles",
    "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
    "pool_id": null,
    "progress_info": null,
    "result_info": null,
    "stage": "not_started",
    "started_by": {
      "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
      "first_name": "X",
      "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
      "identity_provider": "third-party-api",
      "last_name": "X"
    },
    "updated_at": "2021-09-29T19:30:57.708442Z"
  }
}
Status: 200 "OK"

Update Account General Settings

Updates general settings of a Frame account.

POST /accounts/:id/update_general_settings

Request Parameters

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
is_terminal_banner_enabled Boolean which determines whether terminal banner is enabled Data Boolean True
terminal_banner_settings A JSON object with string values "background_color", "color" and "message" Data JSON False
is_login_banner_enabled Boolean which determines whether login banner is enabled Data Boolean True
login_banner_settings A JSON object with string values "title" and "message" Data JSON False
is_light_publish_enabled Boolean which determines whether light publish is enabled Data Boolean True
light_publish_settings A JSON object with integer value "threshold" Data JSON False
host_name_prefix Host name prefix Data String True
is_test_publish_enabled Boolean which determines whether test publish is enabled Data Boolean True
Request Example
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
}'
Response Example
{
  "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
}
Status: 200 "OK"

Update Account Session Settings

Updates session settings of a Frame account.

POST /accounts/:id/update_session_settings

Request Parameters

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
is_app_switching_enabled Is application switching enabled? Data Boolean True
is_microphone_enabled Is microphone enabled? Data Boolean True
is_camera_enabled Is camera enabled? Data Boolean False
is_usb_redirection_enabled Is USB redirection enabled? Data Boolean False
clipboard_integration A JSON object with "is_enabled" boolean value and string value "direction" which has possible values: "local_to_remote", "remote_to_local" and "bidirectional" Data JSON True
is_download_enabled Is download enabled? Data Boolean True
is_cpu_display4k_enabled Is CPU display 4K enabled? Data Boolean True
is_upload_enabled Is upload enabled? Data Boolean True
is_print_enabled Is print enabled? Data Boolean True
reservation_timeout_seconds Reservation timeout in seconds Data Integer True
user_inactivity_timeout_minutes User inactivity timeout in minutes Data Integer True
idle_timeout_minutes Idle timeout in minutes Data Integer True
max_session_duration_minutes Max session duration in minutes Data Integer True
session_preparation_timeout_minutes Session preparation timeout in minutes Data Integer True
max_bandwidth_kbps Max bandwidth in KBPS Data Integer True
max_frame_rate_fps Max Frame rate in FPS Data Integer True
max_video_bit_rate_mbps Max video bit rate in MBPS Data Integer True
max_audio_bit_rate_kbps Max audio bit rate in KBPS Data Integer True
yuv444 Boolean which determines whether YUV444 feature is enabled Data Boolean True
scale_video Scale video Data Number True
max_video_quantization Max video quantization Data Integer True
qos_rate_change QOS rate change Data Integer True
is_grayscale_enabled Is grayscale enabled? Data Boolean True
is_webrtc_enabled Is webRTC enabled? Data Boolean True
video_buffer_length_ms Video buffer length in ms Data Integer True
is_settings_dialog_enabled Is settings dialog enabled? Data Boolean True
advanced_terminal_arguments Advanced terminal arguments Data String False
advanced_server_arguments Advanced server arguments Data String False
terminal_build Terminal Build Data String False
Request Example
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
  }
}'
Response Example
{
  "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
}
Status: 200 "OK"

Publish a Sandbox

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

POST /accounts/:account_id/publish

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "account": {
    "active": true,
    "description": null,
    "id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
    "inserted_at": "2021-08-24T19:59:29.077406Z",
    "kind": "frame",
    "last_publish": "2021-09-22T16:25:59Z",
    "name": "Example Account",
    "notes": null,
    "url_slug": "example-account",
    "website": null
  },
  "pending_request": {
    "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "display_name": "Publishing Sandbox to Production",
    "duration_sec": null,
    "external_resource_id": null,
    "finished_at": null,
    "id": "c454d6da-fa30-4dc4-a533-6af2286d1754",
    "inserted_at": "2021-09-29T19:30:57.708442Z",
    "kind": "publish_sandbox_to_production",
    "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
    "pool_id": null,
    "progress_info": null,
    "result_info": null,
    "stage": "not_started",
    "started_by": {
      "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
      "first_name": "X",
      "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
      "identity_provider": "third-party-api",
      "last_name": "X"
    },
    "updated_at": "2021-09-29T19:30:57.708442Z"
  }
}
Status: 200 OK

List Publish Tasks

Lists publishing tasks for the given account ID.

GET /accounts/:account_id/publish/tasks

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
[
  {
    "id": "gateway-prod.57186",
    "last_change": "2021-09-08T16:10:27.790959",
    "number_of_instances": 1,
    "request_id": 1853969,
    "status": "completed"
  },
  {
    "id": "gateway-prod.57640",
    "last_change": "2021-09-14T14:54:21.841399",
    "number_of_instances": 1,
    "request_id": 1882914,
    "status": "completed"
  },
  {
    "id": "gateway-prod.57651",
    "last_change": "2021-09-14T16:11:07.401356",
    "number_of_instances": 1,
    "request_id": 1883040,
    "status": "completed"
  },
  {
    "id": "gateway-prod.58427",
    "last_change": "2021-09-22T09:25:58.885327",
    "number_of_instances": 1,
    "request_id": 1922643,
    "status": "completed"
  }
]
Status: 200 OK

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

Name Description Param Type Data Type Required
id Frame Account ID URL String True
task_id Task id of a publish URL String True
Request Example
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}"
Response Example
{
  "status": "in_progress",
  "id": "793db0f3-31f7-4cc1-8cd5-741c80407aba"
}
Status: 200 OK

Cancel Publish

Returns details of an account.

DELETE /accounts/:account_id/publish/:task_id

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
task_id Task id of a publish URL String True
Request Example
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}"
Response Example
Status: 200 "OK"

List Instance Types

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

GET /accounts/:account_id/instance_types

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
[
  {
    "display_name": "Air 4GB",
    "external_id": "gateway-prod.1",
    "fgw_compatible": null,
    "gpu": "None",
    "gpu_metadata": null,
    "id": "gateway-prod.1",
    "name": "t2.medium",
    "ram": 4,
    "vcpu": 2
  },
  {
    "display_name": "Pro 122GB",
    "external_id": "gateway-prod.3",
    "fgw_compatible": null,
    "gpu": "1 GPU",
    "gpu_metadata": null,
    "id": "gateway-prod.3",
    "name": "g3.4xlarge",
    "ram": 122,
    "vcpu": 16
  }

  // ... more instance types
]
Status: 200 OK

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

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
server_id Frame Server ID for the Persistent Desktop URL string True
instance_type_id Endpoint request body payload ({"instance_type_id": "gateway-prod.61616"}) Search Query string True
The instance type ID can be found by using the [List Instance Types](account#list-instance-types) endpoint and specifying the `id` for the instance type you want to use
Request Example
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"
Response Example

The response after updating the instance type is simply the server object that was updated successfully.

{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.61616",
  "id": 61616,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

List Applications

Returns a list of applications for the account specified.

GET /accounts/:account_id/applications

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
[
  {
    "working_directory": null,
    "path": "C:\\Program Files\\Frame\\FrameExplorer\\FrameExplorer.exe",
    "name": "Frame Explorer",
    "is_updated": false,
    "is_published": true,
    "is_deleted": false,
    "id": "909b74cc-d207-47ed-bd25-2b8088c36912",
    "icon_url": "https://next-cpanel-dev.s3.amazonaws.com/images/apps/frame_explorer.png",
    "arguments": null
  },
  {
    "working_directory": null,
    "path": "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe",
    "name": "Google Chrome",
    "is_updated": false,
    "is_published": true,
    "is_deleted": false,
    "id": "e288cac6-87c6-4dcf-bd19-5287f571e774",
    "icon_url": "https://next-cpanel-dev.s3.amazonaws.com/images/apps/google_chrome.png",
    "arguments": null
  },
  {
    "working_directory": null,
    "path": "C:\\Windows\\system32\\notepad.exe",
    "name": "Notepad",
    "is_updated": false,
    "is_published": true,
    "is_deleted": false,
    "id": "547e2eeb-7d6c-4ec8-976e-d0677f23322b",
    "icon_url": "https://next-cpanel-dev.s3.amazonaws.com/images/apps/notepad.png",
    "arguments": null
  }
  // ... more onboarded applications
]
Status: 200 OK

List Session Reports

Returns a list of generated session reports.

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

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
[
  {
    "year": 2018,
    "url": "https://s3-datest.dev.fra.me/datest-session-reports/datest/9rnKxGPdbozby6YA.2018.7.4311c.31.csv.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=QazWsxEdc777%2F20180724%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Date=20180724T101921Z&X-Amz-Signature=b77249805c20ddd45d2c38ffed5af6284ee34c57defb33f46911c10ace82dccf",
    "month": 7
  }
]
Status: 200 OK

List Active Sessions

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

GET /accounts/:account_id/active_sessions

Request Parameters

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
[
  {
    "fail_description": null,
    "id": "gateway-prod.oRXVPyy0rklPJrwG",
    "is_https_connection": true,
    "location_city": "Morgan Hill",
    "location_country": "US",
    "location_distance": 288.4650445335911,
    "pool_id": "gateway-prod.535675",
    "server_address": "prod-34-94-1-114.nutanixframe.com",
    "server_ws_port": "443",
    "start_time": 1632949455,
    "state": "open",
    "storages": [],
    "user": {
      "email": "jason.thompson@nutanix.com",
      "first_name": "Jason",
      "identity_provider": "example-idp-name",
      "last_name": "Thompson"
    },
    "user_uuid": "52b19f2e-c8ae-4f12-beab-f2838ce8dce9"
  }
]
Status: 200 OK

List Recent Sessions

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

GET /accounts/:account_id/recent_sessions

Request Parameters

Parameter Name Description Param Type Data Type Required
id Frame Account ID URL string True
from_date The 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 Query ISO 8601 UTC String True
to_date The 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 Query ISO 8601 UTC String True
Request Example
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"
Response Example
[
  {
    "end_time": "2021-09-14T16:51:14.858774Z",
    "fail_description": null,
    "hash_id": "LjpnejZqv1Ve7ak5",
    "id": "gateway-prod.LjpnejZqv1Ve7ak5",
    "location": {
      "city": "Morgan Hill",
      "client_ip": "123.32.145.255",
      "county": null,
      "distance": 288.4650445335911
    },
    "pool_id": "gateway-prod.535675",
    "server": {
      "address": null,
      "https": true,
      "id": "gateway-prod.5909980",
      "instance_type": "e2-standard-2-Windows",
      "pool_group_type": "production",
      "wsport": "443"
    },
    "session_duration": 467,
    "start_time": "2021-09-14T16:43:27.322017Z",
    "state": "closed",
    "timeouts": {
      "connection": 120,
      "idle": 600,
      "max_duration": 3600
    },
    "user_uuid": "52b19f2e-c8ae-4f12-beab-f2838ce8dce9"
  },
  {
    "end_time": "2021-09-14T18:01:43.079788Z",
    "fail_description": null,
    "hash_id": "kvg0PbwL1ggDw1Er",
    "id": "gateway-prod.kvg0PbwL1ggDw1Er",
    "location": {
      "city": "Morgan Hill",
      "client_ip": "123.32.145.255",
      "county": null,
      "distance": 288.4650445335911
    },
    "pool_id": "gateway-prod.535674",
    "server": {
      "address": "prod-34-94-251-72.nutanixframe.com",
      "https": true,
      "id": "gateway-prod.5847490",
      "instance_type": "e2-standard-2-Windows",
      "pool_group_type": "sandbox",
      "wsport": "443"
    },
    "session_duration": 521,
    "start_time": "2021-09-14T17:53:01.232834Z",
    "state": "closed",
    "timeouts": {
      "connection": 120,
      "idle": 600,
      "max_duration": 3600
    },
    "user_uuid": "52b19f2e-c8ae-4f12-beab-f2838ce8dce9"
  }
]
Status: 200 OK

List Session Details

Returns information regarding a specific session.

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

Request Parameters

Parameter Description Param Type Data Type Required
account_id Frame Account ID URL String True
session_id ID of a session URL String True
Request Example
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}"
Response Example
[
  [
    {
      "fail_description": null,
      "id": "gateway-prod.oRXVPyy0rklPJrwG",
      "is_https_connection": true,
      "location_city": "Morgan Hill",
      "location_country": "US",
      "location_distance": 288.4650445335911,
      "pool_id": "gateway-prod.535675",
      "server_address": "prod-34-94-1-114.nutanixframe.com",
      "server_ws_port": "443",
      "start_time": 1632949455,
      "state": "open",
      "storages": [],
      "user_uuid": "52b19f2e-c8ae-4f12-beab-f2838ce8dce9"
    }
  ]
]
Status: 200 OK

List Session Trails

Returns Session Trails for the Frame Account specified.

GET /accounts/:account_id/session-trails

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL String True
search Filters results if the provided string matches against Server ID, Session ID, email address, and a user's full name. Search Query String False
session_start The 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 Query ISO 8601 UTC String False
session_end The 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 Query ISO 8601 UTC String False
instance_type Filters Session Trails based on a specific instance type ID. Search Query String False
pool_group_type Filters Session Trails based on the pool group type (e.g. "sandbox", "test", "production"). Search Query String False
pool_id Filters Session Trails based on provided instance type's pool ID. Search Query String False
offset Used to specify where to start the query. Must be used in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the “page size” of the query. Must be used in conjunction with the offset parameter. Search Query Integer (String) False
order Specifies the order of the results. Use “asc” for ascending order, and “desc” for descending order. Search Query String False
order_by Specifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc. Search Query String False
Request Example
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"
Response Example
[
  {
    "account_id": "084ab7d0-e4ca-4dea-932a-45bf33f02088",
    "bandwidth_kbps_avg": 15921.05,
    "bandwidth_kbps_max": 16128,
    "bandwidth_kbps_min": 14024,
    "city": "Tehama",
    "client_ip": "123.32.145.255",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "distance": 2369.002238311968,
    "fail_description": null,
    "framerate_ps_avg": 19.74,
    "framerate_ps_max": 20,
    "framerate_ps_min": 10,
    "id": "b970ec31-ca07-48c9-8b56-4547a7b1a9f8",
    "instance_type": "t2.large",
    "latency_ms_avg": 110.36,
    "latency_ms_max": 132,
    "latency_ms_min": 106,
    "launchpad_id": "19ca2393-ac2e-4497-939e-757f02c18654",
    "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
    "pool_group_type": "sandbox",
    "pool_id": "d54b760c-956a-487b-a675-e113677fe871",
    "pool_instance_type": {
      "bare_metal": null,
      "cpu": null,
      "display_name": "Air 8GB",
      "fgw_compatible": null,
      "gpu": "None",
      "id": "gateway-prod.5",
      "name": "t2.large",
      "ram": 8,
      "vcpu": 2
    },
    "server_id": "gateway-prod.5232637",
    "session_duration": 2391,
    "session_end": "2021-02-25T23:17:27.000000Z",
    "session_id": "gateway-prod.nMOARz25k9LDmGN0",
    "session_start": "2021-02-25T23:15:56.000000Z",
    "time_to_start": 7,
    "user_email": "example.user@company.com",
    "user_first_name": "Example",
    "user_id": "52b19f2e-c8ae-4f12-beab-f2838ce8dce9",
    "user_idp": "example-idp",
    "user_last_name": "User"
  }
  // ... more sessions
]
Status: 200 OK

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.

GET accounts/:account_id/audit-trails

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL String True
search Filters results if the provided string matches against a user's full name, email, idp, or the Audit Trail kind. Search Query String False
kind Filters 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 Query String False
from_date The 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 Query ISO 8601 UTC String False
to_date The 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 Query ISO 8601 UTC String False
offset Used to specify where to start a Audit Trails query. Must be used in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the “page size” of the Audit Trails query. Must be used in conjunction with the offset parameter. Search Query Integer (String) False
order Specifies the order of the results. Use “asc” for ascending order, and “desc” for descending order. Search Query String False
order_by Specifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc. Search Query String False
Request Example
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"
Response Example
[
  {
    "id": "7c3dee57-5a7b-4232-a55d-7d5b8e5f595b",
    "user_first_name": "Jason",
    "user_last_name": "Thompson",
    "user_idp": "example-idp-name",
    "user_email": "jason.thompson@nutanix.com",
    "kind": "updateLaunchpad",
    "account_id": "b00636bf-4f08-404e-a7ba-3c2aaa173335",
    "organization_id": "86bcea89-389f-496a-3c75-1df0ce8d96ca",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "inserted_at": "2021-10-15T20:49:13.377350Z"
  },
  {
    "id": "4f62a8e4-1ac7-430b-9f4f-96fa77ff24f5",
    "user_first_name": "Jason",
    "user_last_name": "Thompson",
    "user_idp": "example-idp-name",
    "user_email": "jason.thompson@nutanix.com",
    "kind": "createLaunchpad",
    "account_id": "b00636bf-4f08-404e-a7ba-3c2aaa173335",
    "organization_id": "86bcea89-389f-496a-3c75-1df0ce8d96ca",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "inserted_at": "2021-10-15T20:49:09.833114Z"
  }
  // ... more Audit Trails
]
Status: 200 OK

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

Parameter Description Param Type Data Type Required
terminal_configuration_id The desired Launchpad Terminal Configuration ID Search Query String True
options JSON 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 Query String False
Request Example
curl -X POST \
-H "Authorization: Bearer ${token}" \
"https://api.console.nutanix.com/v1/sessions/start" \
--data-raw '{
  "options": {
    "user_data" : "Any string",
    "touch" : "false"
  }
}'
Response Example
{
  "account_id": "57fa46fc-eda7-484e-b2ec-cc7032c1811a",
  "close_reason_code": "",
  "fail_description": "",
  "id": "gateway-prod.LjpnejWlw0yP7ak5",
  "is_https_connection": "true",
  "location_city": "Oxon Hill",
  "location_country": "US",
  "location_distance": "331.3852962263057",
  "protocol": "webrtc",
  "server_address": "",
  "server_ws_port": "",
  "signaling_server_url": "wss://messaging.console.nutanix.com/socket/websocket",
  "sso_passthrough_public_key": "",
  "start_time_utc_date_time": "2023-03-28T19:15:30.598820Z",
  "state": "init",
  "stun_server_url": "stun:stun.console.nutanix.com",
  "turn_server_url": ""
}
Status: 200 "OK"

Stop a Session

Stops the specified session.

DELETE /accounts/:account_id/sessions/:session_id

Request Parameters

Parameter Description Param Type Data Type Required
account_id Frame Account ID URL String True
session_id ID of a session URL String True
Request Example
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}"
Response Example
{
  "fail_description": null,
  "id": "gateway-prod.GykYPnBAvMxPldOW",
  "is_https_connection": true,
  "location_city": "Redding",
  "location_country": "US",
  "location_distance": 127.65657296078405,
  "pool_id": "gateway-prod.557068",
  "server_address": "prod-13-xx-xxx-97.nutanixframe.com",
  "server_ws_port": "443",
  "session_token": null,
  "start_time": 1634330027,
  "state": "closing",
  "storages": [],
  "user_uuid": "84c661ab-60ba-43e0-b7bd-3fa33d49ce05"
}
Status: 200 "OK"

Get Sandbox Status

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

GET /accounts/:account_id/sandbox/status

Request Parameters

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "active_servers": 1,
  "active_sessions": 0,
  "available_servers": 1,
  "buffer_servers": 0,
  "max_servers": 1,
  "max_users": 0,
  "min_servers": 0,
  "pool_id": "2d176f51-175d-4b70-8be3-57e67ad84909",
  "running_servers": 1,
  "status": "running_server_available",
  "total_running_servers": 1,
  "total_servers": 1
}
Status: 200 "OK"

Start a Sandbox

Starts the Sandbox server on a specified account.

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True

POST /accounts/:account_id/sandbox/start

Request Example
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"
Response Example
{
  "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Powering on",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "291f6621-431d-425b-9edc-15a9b7aa335b",
  "inserted_at": "2021-09-30T17:10:49.867508Z",
  "kind": "power_on",
  "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
  "pool_id": "2d176f51-175d-4b70-8be3-57e67ad84909",
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-09-30T17:10:49.867508Z"
}
Status: 200 OK

Reboot a Sandbox

Reboots a Sandbox server on a specified account.

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True

POST /accounts/:account_id/sandbox/reboot

Request Example
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"
Response Example
{
  "account_id": "6b9a8c85-dd5b-4c1c-9bf2-ca1ba8e537b7",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Rebooting",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "291f6621-431d-425b-9edc-15a9b7aa335b",
  "inserted_at": "2021-09-30T17:10:49.867508Z",
  "kind": "power_on",
  "organization_id": "2fb210e0-e931-4c62-83fd-b31fe13468ca",
  "pool_id": "2d176f51-175d-4b70-8be3-57e67ad84909",
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "976bcbc7-945a-4511-b1ca-2a3f60e3cade.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "a4da51c5-1c74-45e6-b1ca-2ec739d528d2",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-09-30T17:10:49.867508Z"
}
Status: 200 OK

Stop a Sandbox

Stops the Sandbox server on specified account.

POST /accounts/:account_id/sandbox/stop

Request Parameters

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{}
Status: 202 "Accepted"

List Pools for an Account{#list-pools}

GET /accounts/:account_id/pools

Request Parameters

Name Description Param Type Data Type Required
id Frame Account ID. URL string True
Request Example
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"
Response Example
[
  {
    "disk_size": 50,
    "external_id": "gateway-prod.535675",
    "id": "4256364f-80af-4abd-9292-741211acf27d",
    "image_family": "GoogleWindows2016",
    "instance_type": "e2-standard-2-Windows",
    "kind": "production",
    "name": "Air 8GB (E2)"
  },
  {
    "disk_size": 50,
    "external_id": "gateway-prod.551557",
    "id": "fc0cc851-0d33-4517-9e67-f6205c762261",
    "image_family": "GoogleWindows2016",
    "instance_type": "custom-2-4096-Windows",
    "kind": "production",
    "name": "Air 4GB"
  }
]
Status: 200 "OK"

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

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
Request Example
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"
Response Example
{
  "min_servers": 75,
  "buffer_servers": 20,
  "max_servers": 475
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
persistent_account_id Frame Account ID (must be a persistent). URL string True
Request Example
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"
Response Example
{
  "keep_instances_running_for_new_users": false,
  "max_users": 10,
  "number_of_backups_to_save": 1
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
persistent_account_id Frame Account ID (must be a persistent). URL string True
offset Used to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the "page size" of the query. Must be used in conjunction with the offset parameter Search Query Integer (String) False
Request Example
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"
Response Example
{
  "current_disk_size": 60.0,
  "free_disk_space": 37.198338,
  "id": "gateway-prod.7705597",
  "last_used_time": "2023-04-06T16:15:02.055502",
  "name": "Persistent desktop - David Example - david.example@nutanix.com",
  "pool_id": "091c6494-b7ef-4c7c-9c5f-bdc611b0d66e",
  "session_id": null,
  "status": "available",
  "user_uuid": "b87c7870-efb7-4539-a7d3-91725ba84fea"
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
persistent_account_id Frame Account ID (must be a persistent). URL string True
offset Used to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the "page size" of the query. Must be used in conjunction with the offset parameter Search Query Integer (String) False
Request Example
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"
Response Example
{
  "current_disk_size": 60.0,
  "free_disk_space": 37.198338,
  "id": "gateway-prod.7705597",
  "last_used_time": "2023-04-06T16:15:02.055502",
  "name": "Persistent desktop - David Example - david.example@nutanix.com",
  "pool_id": "091c6494-b7ef-4c7c-9c5f-bdc611b0d66e",
  "session_id": null,
  "status": "available",
  "user_uuid": "b87c7870-efb7-4539-a7d3-91725ba84fea"
}
Status: 200 "OK"

List Logged In Users

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

This endpoint is required to [reassign persistent desktops](#reassign-persistent-desktop) for persistent Frame Accounts. However, this endpoint can be used with any other account type.

GET /accounts/:account_id/logged_in_users

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
offset Used to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the "page size" of the query. Must be used in conjunction with the offset parameter Search Query Integer (String) False
search Used to search/filter for specific results from the returned list of logged in users Search Query String False
Request Example
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"
Response Example
[
  {
    "idp": "frame-password",
    "id": "e69e7f7c-83fd-461f-8387-13dbcef87a53",
    "email": "john.doe@example.net"
  }
]
Status: 200 "OK"

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

Name Description Param Type Data Type Required
persistent_account_id Frame Account ID (must be a persistent). URL string True
server_external_id Frame "external" server ID (found by querying account servers). URL string True
Request Example
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"
Response Example
{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.6810382",
  "id": 6810382,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
persistent_account_id Frame Account ID (must be a persistent). URL string True
server_external_id Frame "external" server ID (found by querying account servers). URL string True
user_uuid Frame User's UUID (found by querying logged_in_users) URL string True
Request Example
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"
Response Example
{
  "zone": "us-east-2a",
  "user_in_session": {
    "last_name": "Doe",
    "identity_provider": "string",
    "first_name": "John",
    "email": "john.doe@example.net"
  },
  "upgrade_version": 0,
  "status": "stopped",
  "server_version": "8.4.9.0",
  "server_ip": null,
  "reserved": 0,
  "recovery": true,
  "public_wsport": 0,
  "public_hostname": null,
  "problem": true,
  "private_ip": "10.0.5.62",
  "pool_name": "persistent_desktop_production",
  "pool_external_id": "gateway-prod.588775",
  "name": "Unassigned",
  "maintenance": true,
  "machine_status": null,
  "machine_name": "IF-3B1F59DDA36E",
  "launch_time": null,
  "last_change": "2022-05-12 23:22:31.047114Z",
  "instance_type_name": "t3.xlarge",
  "in_use": true,
  "id": 6810382,
  "external_id": "gateway-prod.6810382",
  "domain_joined": true,
  "desired_status": "stopped",
  "debug": true,
  "creation_time": "2022-05-12 23:22:31.047114Z""string",
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "active": true
}
Status: 200 "OK"

Reboot a Server

Reboots the specified server.

POST /accounts/:account_id/servers/reboot

Request Parameters

Name Description Param Type Data Type Required
server_id Frame Server ID. URL string True
account_server_reboot Server reboot payload ({"force": false}) Search Query string True
** If `force` is set to true, the server will be rebooted immediately **
Request Example
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"
Response Example

The response after rebooting a server is simply the server object that was rebooted successfully.

{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.6810382",
  "id": 6810382,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

Start a Server

Starts the specified server.

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

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID. URL string True
server_external_id Server External ID. URL string True
Request Example
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"
Response Example

The response after starting a server is simply the server object that was started successfully.

{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.6810382",
  "id": 6810382,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

Stop a Server

Shuts down the specified server.

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

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID. URL string True
server_external_id Server External ID. URL string True
account_server_stop Server stop payload ({ "force": false}) Search Query string True
** If `force` is set to true, the server will be stopped immediately. This will not be considered a clean shutdown by the VM **
Request Example
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"
Response Example

The response after stopping a server is simply the server object that was stopped successfully.

{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.6810382",
  "id": 6810382,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

Terminate Server

Terminates the specified server.

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

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID. URL string True
server_external_id Frame "external" server ID (found by querying account servers). URL string True
force If set to true, the server will be terminated immediately. If set to false, it will terminate as soon as it's available. Search Query boolean True
**This is an irreversable action, use with caution!**
Request Example
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"
Response Example

The response after terminating a server is simply the server object that was terminated successfully.

{
  "active": false,
  "cloud_instance_id": "i-0cc3ec91870672ab6",
  "creation_time": "2022-05-12 23:22:31.047114Z",
  "debug": false,
  "desired_status": "stopped",
  "domain_joined": false,
  "external_id": "gateway-prod.6810382",
  "id": 6810382,
  "in_use": false,
  "instance_type_name": "t3.xlarge",
  "last_change": "2022-06-08 20:35:10.633672Z",
  "launch_time": null,
  "machine_name": "IF-3B1F59DDA36E",
  "machine_status": null,
  "maintenance": false,
  "name": "Unassigned",
  "pool_external_id": "gateway-prod.588775",
  "pool_name": "persistent_desktop_production",
  "private_ip": "10.0.5.62",
  "problem": false,
  "public_hostname": null,
  "public_wsport": 443,
  "recovery": false,
  "reserved": -1,
  "server_ip": null,
  "server_version": "8.4.9.0",
  "status": "stopped",
  "upgrade_version": 0,
  "user_in_session": null,
  "zone": "us-east-2a"
}
Status: 200 "OK"

List Pool Capacity Settings

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

GET /pools/:pool_id/elasticity_settings

Request Parameters

Name Description Param Type Data Type Required
pool_id ID of the Instance Type/pool you're getting settings for. URL string True
Request Example
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"
Response Example
{
  "min_servers": 15,
  "buffer_servers": 2,
  "max_servers": 100
}
Status: 200 "OK"

Set Pool Capacity Settings

Sets new min, buffer, or max values for a specific 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.

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

Name Description Param Type Data Type Required
pool_id ID of the specific pool you'd like to set capacity settings for URL String True
min_servers Minimum servers value for a pool Form Data String False
buffer_servers Buffer servers value for a pool Form Data String False
max_servers Maximum server capacity value for a pool Form Data String True
Request Example
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 \
Response Example
{
  "account_id": "XXXXXXXX-09cf-44d9-a386-XXXXXXXXXXX",
  "customer_id": "XXXXXXXX-5ab2-47df-9f9c-XXXXXXXXXXX",
  "display_name": "Updating elasticity for Air 4GB",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "0bf720c4-7729-48aa-95a8-470211aea40f",
  "inserted_at": "2021-08-05T17:50:32.106790Z",
  "kind": "update_pool_elasticity_settings",
  "organization_id": "82ccea89-389f-496a-9c75-XXXXXXXXXXX",
  "pool_id": "cd5e4467-3f20-49eb-803b-9514eeab7711",
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "XXXXXXXXXXX.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "XXXXXXXX-2f74-4dad-8e55-XXXXXXXXXXX",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-08-05T17:50:32.106790Z"
}
Status: 200 "OK"

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.

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

Name Description Param Type Data Type Required
persistent_account_id ID of your persistent Frame account. URL String True
number_of_backups_to_save Like it says, this value determines the number of persistent desktop backups to save for recovery. Form Data String False
max_users This 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 Data String True
keep_instances_running_for_new_users If true, unassigned persistent desktops will continue running until a new user connects and assigns it. Form Data Boolean True

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

Request Example
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 \
Response Example
{
  "account_id": "XXXXXXXX-d55d-4aec-98f6-XXXXXXXXXXX",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Updating capacity for persistent desktop",
  "duration_sec": null,
  "external_resource_id": null,
  "finished_at": null,
  "id": "111e0873-08e6-4cfa-9cf0-5d60eaae1585",
  "inserted_at": "2022-06-27T18:02:39.637192Z",
  "kind": "update_persistent_desktop_settings",
  "organization_id": "XXXXXXXX-389f-496a-9c75-XXXXXXXXXXX",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "XXXXXXXX-3bee-405f-8c28-XXXXXXXXXXX.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "XXXXXXXX-2f74-45b2-8e55-XXXXXXXXXXX",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2022-06-27T18:02:39.637192Z"
}
Status: 200 "OK"

List Elasticity Logs

Returns logs for elasticity changes.

GET /accounts/:account_id/elasticity-logs

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL String True
instance_type_name Filters 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 Query String True
from_date The 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 Query ISO 8601 UTC String True
to_date The 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 Query ISO 8601 UTC String True
Request Example
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"
Response Example
[
  {
    "active_instances": 15,
    "active_sessions": 0,
    "buffer_instances": 0,
    "max_instances": 20,
    "max_setting": 20,
    "min_instances": 0,
    "timestamp": "2021-07-20T21:28:59.893337Z"
  },
  {
    "active_instances": 15,
    "active_sessions": 0,
    "buffer_instances": 0,
    "max_instances": 15,
    "max_setting": 15,
    "min_instances": 0,
    "timestamp": "2021-07-20T22:16:31.521437Z"
  },
  {
    "active_instances": 80,
    "active_sessions": 0,
    "buffer_instances": 0,
    "max_instances": 80,
    "max_setting": 80,
    "min_instances": 65,
    "timestamp": "2021-08-05T18:47:08.435230Z"
  },
  {
    "active_instances": 100,
    "active_sessions": 0,
    "buffer_instances": 0,
    "max_instances": 100,
    "max_setting": 100,
    "min_instances": 75,
    "timestamp": "2021-09-30T18:53:56.513631Z"
  }
]
Status: 200 "OK"

List Account Roles

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

GET /accounts/:account_id/roles

Request Parameters

Name Description Param Type Data Type Required
account_id Nutanix Account ID URL String True
Request Example
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"
Response Example
[
  {
    "applicable_on": "account",
    "category": null,
    "description": null,
    "id": "c1aad088-50c2-45ab-aca2-8261d9982d14",
    "name": "Account Administrator",
    "permissions": [
      "cpanel_mutation_update_application_on_publish",
      "cpanel_account_data_center",
      "cpanel_account_analytics",
      "cpanel_mutation_revoke_user_invitation",
      "cpanel_launchpad_session_settings"
      // ... More role permissions
    ]
  }
]
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id Frame Account ID URL String True
from_date The beginning date range for the query. Search Query YYYY-MM-DD Date string True
to_date The ending date range for the query. Search Query YYYY-MM-DD Date string True
order Specifies the order of the results. Use “asc” for ascending order, and “desc” for descending order. Search Query String False
order_by Specifies the field of which the ordering should occur. For example, “session_start”, “session_duration”, etc. Search Query String False
skip_user_idps[] User Identity Providers to skip. Search Query Array (String) False
Request Example
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"
Response Example
{
  "data": [
    {
      "access_date": "2022-02-01",
      "access_datetime": "2022-02-01T21:11:00.398870Z",
      "account_id": "0e52b11b-23bf-411e-a070-bc0ea014cbc2",
      "customer_id": "6ba31e38-1735-4274-a58e-6fb8c662e425",
      "organization_id": "bc24563d-375b-49fb-8f15-1682b8bc6deb",
      "user_email": "dontcallme.shirley@example.com",
      "user_first_name": "Shirley",
      "user_id": "20acd3a2-b455-4dca-b22b-520e16079e11",
      "user_idp": "example-okta-workforce",
      "user_last_name": "Dontcallme"
    }
    // ... more User Activities
  ],
  "total": 66866,
  "total_unique": 8133
}
Status: 200 "OK"

List Servers for an Account{#list-servers}

Returns all workload servers for an account.

GET /accounts/:account_id/servers

Request Parameters

Parameter Description Param Type Data Type Required
account_id Your Frame account ID. URL String True
Request Example
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"
Response Example
[
  {
    "active": false,
    "cloud_instance_id": "i-04198255723b27d69",
    "creation_time": "2021-07-20 21:22:49.287276Z",
    "debug": false,
    "desired_status": "stopped",
    "domain_joined": false,
    "external_id": "gateway-prod.575XXXX",
    "id": 575XXXX,
    "in_use": false,
    "instance_type_name": "t2.medium",
    "last_change": "2021-08-04 21:13:57.243020Z",
    "launch_time": null,
    "machine_name": "IF-F89A27E05E86",
    "machine_status": null,
    "maintenance": false,
    "name": "Lenticular Cloud Project - 575XXXX",
    "pool_external_id": "gateway-prod.520XXX",
    "pool_name": "sandbox",
    "private_ip": "10.0.4.145",
    "problem": false,
    "public_hostname": null,
    "public_wsport": 443,
    "recovery": false,
    "reserved": -1,
    "server_ip": null,
    "server_version": null,
    "status": "stopped",
    "upgrade_version": 0,
    "user_in_session": null,
    "zone": "us-west-1a"
  },
  // More servers...
]
Status: 200 "OK"

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.

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

Parameter Description Param Type Data Type Required
target_account_id This is the target account ID URL String True
source_pool_id The source account's Sandbox pool ID URL String True
join_domain Optional. Can be true or false. Determines whether Frame should attempt to join the domain after the Sandbox has been cloned. search Query String False
Request Example
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
Response Example
{
  "account": {
    "active": true,
    "description": null,
    "id": "XXXXXXXX-32ef-4ea9-a896-XXXXXXXXXXX",
    "inserted_at": "2021-07-28T20:48:09.614305Z",
    "kind": "frame",
    "last_publish": null,
    "name": "API Clone Tutorial",
    "notes": null,
    "url_slug": "api-clone-tutorial",
    "website": null
  },
  "pending_request": {
    "account_id": "XXXXXXXX-32ef-4ea9-a896-XXXXXXXXXXX",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "display_name": "Cloning system",
    "duration_sec": null,
    "external_resource_id": null,
    "finished_at": null,
    "id": "e7e44ecb-5e8c-342d-8c23-b190b1004e31",
    "inserted_at": "2021-08-05T18:17:20.692055Z",
    "kind": "clone_pool",
    "organization_id": "XXXXXXXX-389f-496a-9c75-XXXXXXXXXXX",
    "pool_id": "cce63a88-4dad-4725-81b0-d492a6427b00",
    "progress_info": null,
    "result_info": null,
    "stage": "not_started",
    "started_by": {
      "email": "XXXXXXXX-3bee-405f-8c28-XXXXXXXXXXX.img.frame.nutanix.com_third-party-api",
      "first_name": "X",
      "id": "XXXXXXXX-2f74-4dad-8e55-XXXXXXXXXXX",
      "identity_provider": "third-party-api",
      "last_name": "X"
    },
    "updated_at": "2021-08-05T18:17:20.692055Z"
  }
}
Status: 200 "OK"

Get Task Status

Returns the current status of a provided task ID.

GET /accounts/:account_id/task/:task_id

Request Parameters

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
task_id Frame Task ID URL String True
Request Example
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}"
Response Example
{
  "account_id": "XXXXXXXX-09cf-44d9-a386-XXXXXXXXXXX",
  "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
  "display_name": "Publishing Sandbox to Production",
  "duration_sec": 1530,
  "external_resource_id": null,
  "finished_at": "2021-07-20T22:16:31.680241Z",
  "id": "57643caa-1700-4938-b6cc-94b8dd5fa7df",
  "inserted_at": "2021-07-20T21:51:01.481733Z",
  "kind": "publish_sandbox_to_production",
  "organization_id": "86bcea89-389f-496a-3c75-1df0ce8d96ca",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "done",
  "started_by": {
    "email": "68f43670-3bee-405f-8c28-cc5baf354e5f.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "d15d3125-2f74-45b2-8e55-1574de5e2b6a",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2021-07-20T22:16:31.681266Z"
}
Status: 200 "OK"

List Account Usage

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

GET /accounts/:account_id/usage

Request Parameters

Parameter Description Param Type Data Type Required
id Frame Account ID Search Query String True
from_date The 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 Query ISO 8601 UTC String True
to_date The 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 Query ISO 8601 UTC String True
resolution_type What is the resolution type: by_hour, by_day, by_month, by_year Search Query String False
server_type Server Type: by_hour, by_day, by_month, by_year Search Query String False
pool_id Frame Pool ID. Search Query String False
instance_type_id Frame Instance Type ID: Search Query String False
Request Example
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"
Response Example
{
  "usage_data": {
    "vendor_id": 1338,
    "usage": [
      {
        "time": 1532217600000,
        "server_type_id": "sandbox",
        "instance_type": {
          "name": "t2.medium",
          "id": 4
        },
        "hours_used": 1,
        "datacenter": {
          "name": "aws-de",
          "id": 6,
          "geo_long": 8.683333,
          "geo_lat": 50.116667
        }
      },
      {
        "time": 1532253600000,
        "server_type_id": "sandbox",
        "instance_type": {
          "name": "t2.medium",
          "id": 4
        },
        "hours_used": 1,
        "datacenter": {
          "name": "aws-de",
          "id": 6,
          "geo_long": 8.683333,
          "geo_lat": 50.116667
        }
      }
    ],
    "gateway_id": "gateway-web-datest.dev.fra.me"
  },
  "status_message": "Success.",
  "status": 0,
  "resolution": "by_hour",
  "credited_data": {
    "vendor_id": 1338,
    "gateway_id": "gateway-web-datest.dev.fra.me",
    "credit": [
      {
        "time": 1532253600000,
        "server_type_id": null,
        "instance_type": {
          "name": "t2.medium",
          "id": 4
        },
        "datacenter": {
          "name": "aws-de",
          "id": 6,
          "geo_long": 8.683333,
          "geo_lat": 50.116667
        },
        "credited_hours": 2
      }
    ]
  }
}
Status: 200 "OK"

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

Parameter Description Param Type Data Type Required
id Frame Account ID URL String True
from_date The 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”. URL ISO 8601 UTC String True
to_date The 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”. URL ISO 8601 UTC String True
server_type Server Type: by_hour, by_day, by_month, by_year Search Query String False
resolution_type Defaults to by_hour, options: by_hour, by_day, by_month, by_year Search Query String False
Request Example
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"
Response Example
{
  "data": [
    {
      "account_external_id": "gateway-prod.1337",
      "usage": [
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 1488,
          "disk_volume_size_used": 223200,
          "disk_volume_type_id": "gp2",
          "time": 1577836800000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 1392,
          "disk_volume_size_used": 208800,
          "disk_volume_type_id": "gp2",
          "time": 1580515200000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 1488,
          "disk_volume_size_used": 223200,
          "disk_volume_type_id": "gp2",
          "time": 1583020800000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 1443,
          "disk_volume_size_used": 247779,
          "disk_volume_type_id": "gp2",
          "time": 1585699200000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 1539,
          "disk_volume_size_used": 299343,
          "disk_volume_type_id": "gp2",
          "time": 1588291200000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 2344,
          "disk_volume_size_used": 295136,
          "disk_volume_type_id": "gp2",
          "time": 1590969600000
        },
        {
          "datacenter_id": "gateway-prod.3",
          "hours_used": 10311,
          "disk_volume_size_used": 334187,
          "disk_volume_type_id": "gp2",
          "time": 1593561600000
        }
      ]
    }
  ],
  "total": 1831645
}
Status: 200 "OK"

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

Parameter Description Param Type Data Type Required
entity_id Frame Account, Organization, or Customer ID. URL String True
Request Example
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"
Response Example
[
  {
    "roles": [
      {
        "role": {
          "permissions": ["..."],
          "name": "Account Administrator",
          "description": null,
          "applicable_on": "account"
        },
        "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }
    ],
    "name": "example2",
    "id": 8,
    "credentials": [
      {
        "name": "example2_key",
        "client_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.img-external-api-prod.frame.nutanix.com"
      }
    ],
    "api_authorization_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
  },
  {
    "roles": [
      {
        "role": {
          "permissions": ["..."],
          "name": "Account Administrator",
          "description": null,
          "applicable_on": "account"
        },
        "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
      }
    ],
    "name": "example",
    "id": 7,
    "credentials": [
      {
        "name": "example_key",
        "client_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.img-external-api-prod.frame.nutanix.com"
      }
    ],
    "api_authorization_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
  }
]
Status: 200 "OK"

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

Name Description Param Type Data Type Required
organization_id The Frame Organization ID that the account will be created under. Data String True
name A unique name of the new account. Data String True
url_slug A URL-friendly slug that will be used in URLs to access the account. Data String True
cloud_service_external_id This 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. Data String True
data_center_external_id This 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. Data String True
sandbox_instance_type_id This 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.xx Data String True
image_family This 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. Data String True
master_image_id Required. 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. Data String True
disk_size Optional. 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 Data String False
Request Example
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
Response Example
{
  "account": {
    "active": false,
    "description": null,
    "id": "724a1d0b-a2eb-69a1-8557-8fdd41e3654b",
    "inserted_at": "2022-04-27T19:40:11.086149Z",
    "kind": "frame",
    "last_publish": null,
    "last_test_publish": null,
    "name": "Example Account",
    "notes": null,
    "url_slug": "example-account",
    "website": null
  },
  "pending_request": {
    "account_id": "154a1d0b-a2ec-42a1-8757-8fdd41e3554c",
    "customer_id": "XXXXXXXX-5ab2-47ef-9f9c-XXXXXXXXXXX",
    "display_name": "Creating account Example Account",
    "duration_sec": null,
    "external_resource_id": null,
    "finished_at": null,
    "id": "96c8d6c1-8008-562b-81d7-d40073a88b11",
    "inserted_at": "2022-04-27T19:40:12.310097Z",
    "kind": "create_account",
    "organization_id": "83ccba89-389f-492a-1c75-5df0ce8c96ce",
    "pool_id": null,
    "progress_info": null,
    "result_info": null,
    "stage": "not_started",
    "started_by": {
      "email": "68f43670-3bce-405f-8c28-cc5baf354e52.img.console.nutanix.com_jasons-awesome-api",
      "first_name": "Jason",
      "id": "d15d3125-2f74-45b2-8e55-1574de5e2b6a",
      "identity_provider": "jasons-awesome-api",
      "last_name": "Thompson"
    },
    "updated_at": "2022-04-27T19:40:12.310097Z"
  }
}
Status: 200 "OK"
Use the **pending_request.id**/**task_id** to track the status of your account creation via [[Get Task Status]](#get-task-status).

Create an Account Launchpad

Creates a Launchpad based on supplied parameters.

POST /accounts/:account_id/launchpad

Request Parameters

Parameter Description Param Type Data Type Required
account_id ID of the account the Launchpad will be created under. URL String True
name Name of the new Launchpad. Data String True
url_slug A URL-friendly slug that will be used in URLs to access the Launchpad Data String True
kind This determines the kind of Launchpad you want to create. You can create two kinds: application and desktop Data String True
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.
Request Example
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 \
Response Example
{
  "active": true,
  "description": null,
  "id": "7d8fdb87-7683-40d0-81be-e7ee35a05db2",
  "kind": "desktop",
  "name": "Windows 2019 Desktop",
  "notes": null,
  "order": 1,
  "url_slug": "w2019-desktop"
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
Application A 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,. Data JSON True
Request Example
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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"
}'
Response Example
{
  "arguments": "",
  "icon_url": "https://assets.console.nutanix.com/images/icons/81679a506e0d4523b5532c4609b60f8c.png",
  "id": "6ca03d2d-8729-432e-add9-c9fe21f42e9b",
  "is_deleted": false,
  "is_published": false,
  "is_updated": false,
  "name": "Internet Explorer (Last Resort)",
  "path": "C:\\Program Files\\Internet Explorer\\iexplore.exe",
  "updated_arguments": null,
  "updated_icon_url": null,
  "updated_name": null,
  "updated_path": null,
  "updated_working_directory": null,
  "working_directory": ""
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Org the account will be created under URL String True
applications A 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,. Data JSON True
Request Example
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
  ]
}'
Response Example
{
  [
    {
      "arguments": "",
      "icon_url": "https://assets.console.nutanix.com/images/icons/81679a506e0d4523b5532c4609b60f8c.png",
      "id": "6ca03d2d-8729-432e-add9-c9fe21f42e9b",
      "is_deleted": false,
      "is_published": false,
      "is_updated": false,
      "name": "Internet Explorer (Last Resort)",
      "path": "C:\\Program Files\\Internet Explorer\\iexplore.exe",
      "updated_arguments": null,
      "updated_icon_url": null,
      "updated_name": null,
      "updated_path": null,
      "updated_working_directory": null,
      "working_directory": ""
    },
    // ... All of the other applications you onboarded
  ]
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Frame Account you'd like to list Launchpads for. URL String True
offset Used to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the "page size" of the query. Must be used in conjunction with the offset parameter Search Query Integer (String) False
Request Example
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"
Response Example
[
  {
    "url_slug": "desktop-1",
    "settings": {
      "session_settings": {},
      "new_app_mode_enabled": false,
      "is_session_setting_enabled": false
    },
    "order": 0,
    "name": "Desktop 1",
    "kind": "desktop",
    "id": "996cb66d-0d16-468e-b05f-192497fafc14",
    "backgrounds": [],
    "pools": [],
    "description": null,
    "active": true
  },
  {
    "url_slug": "apps-1",
    "settings": {
      "session_settings": {},
      "new_app_mode_enabled": false,
      "is_session_setting_enabled": false
    },
    "order": 1,
    "name": "Apps 1",
    "kind": "application",
    "id": "896cb66d-0d16-468e-b05f-192497fafc13",
    "applications": [],
    "pools": [],
    "backgrounds": [],
    "description": null,
    "active": true
  }
]
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id ID of the Frame Account. URL String True
launchpad_id ID of the Launchpad to query. URL String True
Request Example
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}"
Response Example
{
  "url_slug": "apps-1",
  "settings": {
    "session_settings": {},
    "new_app_mode_enabled": false,
    "is_session_setting_enabled": false
  },
  "order": 1,
  "name": "Apps 1",
  "kind": "application",
  "id": "896cb66d-0d16-468e-b05f-192497fafc13",
  "applications": [],
  "pools": [],
  "backgrounds": [],
  "description": null,
  "active": true
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
launchpad_id ID of the Launchpad you'd like to enable an application for. URL String True
Application A JSON object that includes string values for the following property names: application_id, and order (optional). Data JSON True
You can find your application IDs by querying [GET /accounts/:account_id/applications](#list-applications)
Request Example
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"
}'
Response Example

The response will include the Launchpad's details. Including all enabled applications, and all enabled pools. If your application is present in the response, it's enabled and visible in Frame (a browser refresh required). If your application is not in the response, it is now disabled and no longer visible to end users (browser refresh required).

{
  "active": true,
  "applications": [
    {
      "id": "b7cba1b1-04ae-41e1-8375-c8346f542684",
      "name": "SketchBook",
      "path": "C:\\Program Files\\Autodesk\\SketchBook\\SketchBook.exe",
      "icon_url": "https://assets.console.nutanix.com/images/icons/886669ca055840c9ad10ed839d7081c9.png",
      "working_directory": null,
      "arguments": null,
      "is_published": true,
      "is_updated": false,
      "is_deleted": false
    },
    {
      "id": "03c8a53e-e1c0-4801-9b86-dea1de76fadf",
      "name": "ZBrushCoreMini 2020",
      "path": "C:\\Program Files\\Pixologic\\ZBrushCoreMini 2020\\ZBrushCoreMini.exe",
      "icon_url": "https://assets.console.nutanix.com/images/icons/8fc401a395f847ac9f0c65d7e88e4ca2.png",
      "working_directory": null,
      "arguments": null,
      "is_published": true,
      "is_updated": false,
      "is_deleted": false
    },
    {
      "id": "92ac6d27-c791-42b8-b3f0-2c72912d962d",
      "name": "Frame Explorer",
      "path": "C:\\Program Files\\Frame\\FrameExplorer\\FrameExplorer.exe",
      "icon_url": "https://assets.console.nutanix.com/images/icons/frame_explorer.png",
      "working_directory": null,
      "arguments": null,
      "is_published": true,
      "is_updated": false,
      "is_deleted": false
    }
  ]
  // ... the rest of the launchpad's details, including instance type pools and settings.
}
Status: 200 "OK"

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

Name Description Param Type Data Type Required
launchpad_id ID of the Launchpad you'd like to enable an application for. URL String True
Application A 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. Data JSON True
Request Example
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"
}'
Response Example

The response will include the Launchpad's details. Including all enabled applications, and all enabled pools. If your requested instance pool is present in the response, it's enabled and visible in Frame (a browser refresh required). If your instance pool is not in the response, it is now disabled and no longer visible to end users (browser refresh required).

{
  "active": true,
  "applications": [
    // our applications
  ],
  "pools": [
    {
      "id": "28dfa4dd-4354-47fd-9fd0-3d287e157d92",
      "kind": "production",
      "name": "Air 4GB",
      "instance_type": "t2.medium",
      "disk_size": 201,
      "external_id": "gateway-prod.595566"
    },
    {
      "id": "c23b4ba1-c4d8-4bcf-8e62-d1f0d8477907",
      "kind": "production",
      "name": "Pro 122GB",
      "instance_type": "g3.4xlarge",
      "disk_size": 201,
      "external_id": "gateway-prod.12005"
    }
  ]
  // ... the rest of the Launchpad's details and settings.
}
Status: 200 "OK"

List User Volumes

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

GET /accounts/:account_id/user_volumes

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
offset Used to specify where to start the query from the results (Used for pagination). Must be in conjunction with the limit parameter. Search Query Integer (String) False
limit Used to specify the "page size" of the query. Must be used in conjunction with the offset parameter Search Query Integer (String) False
Request Example
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"
Response Example
[
  {
    "created_time": "2023-02-23T17:21:25.280777Z",
    "free_space": 5.92408,
    "id": "gateway-prod.137452",
    "last_backup_fail_reason": "success",
    "last_backup_success": true,
    "last_used_time": "2023-02-28T16:33:42.168903Z",
    "name": "David Horv - djhorv+01@gmail.com",
    "server": null,
    "size": 6.0,
    "status": "detached",
    "type": "profile",
    "user_uuid": "2394aa40-a078-4cd4-a293-f17c0ba22825",
    "vendor": "gateway-prod.49981",
    "volume_id": "vol-049a795cceef7372a"
  }
]
Status: 200 "OK"

Delete User Volumes

Deletes onbe or more user volumes.

DELETE /accounts/:account_id/user_volumes

Request Parameters

Parameter Description Param Type Data Type Required
account_id Frame Account ID URL String True
user_volume_ids List of User Volume IDs body json True
Request Example
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"]
}'
Response Example
{
  "account_id": "c54a4189-93e0-46d7-a333-d07cab1d4e7b",
  "customer_id": "fd8dc130-cfe6-40d9-8b3e-7af39024e0e8",
  "display_name": "Deleting user volumes",
  "duration_sec": 21,
  "external_resource_id": null,
  "finished_at": "2023-03-13T16:43:14.600164Z",
  "id": "bf873017-5359-4516-ba8e-91330566abe4",
  "inserted_at": "2023-03-13T16:42:53.768400Z",
  "kind": "bulk_delete_user_volume",
  "organization_id": "fefca2ef-e0fc-42c6-88d3-a21ef995be97",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "done",
  "started_by": {
    "email": "afe5c674-60a6-4143-8015-55d3f9a4e74a.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "b93bef6a-0f9a-455e-92dc-5ff52ddd014a",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2023-03-13T16:43:14.600807Z"
}
Status: 200 "OK"

List User Volume Backups{#list-backups}

Returns all user volumes associated with an account.

GET /accounts/:account_id/user_volumes_backups

Request Parameters

Parameter Description Param Type Data Type Required
account_id Your Frame account ID. URL String True
Request Example
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"
Response Example
[
  {
    "backup_datetime": "2023-04-06 17:40:24",
    "id": "gateway-prod.927553",
    "kind": "personal",
    "name": "David-02 Example - djexample+02@gmail.com - Personal drive backup - pc4pvb",
    "replication_status": null,
    "type": "manual",
    "vendor_id": "gateway-prod.50591"
  }
  // More backups...
]
Status: 200 "OK"

Delete User Volume Backups{#delete-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

Parameter Description Param Type Data Type Required
user_volume_backup_ids An array of volume backup strings Body String True
account_id Your Frame account ID. URL String False
Request Example
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"
Response Example
[]
Status: 200 "OK"

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

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
user_volume_backup_id Id of the backup (found by querying backups) URL string True
Request Example
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"
Response Example
{
  "account_id": "0a4e3b25-2365-4a71-bdb0-b0e26788ebf7",
  "customer_id": "fd8dc130-cfe6-40d9-8b3e-7af39024e0e8",
  "display_name": "Restoring user volume backup",
  "duration_sec": null,
  "external_resource_id": "gateway-prod.50591",
  "finished_at": null,
  "id": "d7266ef3-11ad-4e8f-8bca-1ee8c1baa5a3",
  "inserted_at": "2023-04-11T18:51:24.217658Z",
  "kind": "restore_user_volume_backup",
  "organization_id": "fefca2ef-e0fc-42c6-88d3-a21ef995be97",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "not_started",
  "started_by": {
    "email": "afe5c674-60a6-4143-8015-55d3f9a4e74a.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "b93bef6a-0f9a-455e-92dc-5ff52ddd014a",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2023-04-11T18:51:24.217658Z"
}
Status: 200 "OK"

Update maintenance mode

Update maintenance mode on the account.

POST /accounts/:account_id/update_account_maintenance_mode

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
under_maintenance Maintenance mode switch Body boolean True
maintenance_message Maintenance mode message Body string False
Request Example
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
  "under_maintenance" : true,
  "maintenance_message": "This account is under maintenance mode"
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/update_account_maintenance_mode"
Response Example
{
  "website": null,
  "name": "Aca Ivic Local",
  "last_publish": "2018-07-12T11:26:18.879116",
  "id": "b614cb6f-796b-4371-86cb-465d6dfc433b",
  "description": null,
  "active": true
}
Status: 200 "OK"

Change Upgrade Group

Change upgrade/deployment group of the account.

POST /accounts/:account_id/change_deployment_group

Request Parameters

Name Description Param Type Data Type Required
account_id Frame Account ID URL string True
upgrade_group_id Upgrade Group External ID Body string True
Request Example
curl -X POST \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
  "upgrade_group_id" : "gateway-prod.1"
}'
"https://api.console.nutanix.com/v1/accounts/${account_id}/change_deployment_group"
Response Example
{
  "website": null,
  "name": "Aca Ivic Local",
  "last_publish": "2018-07-12T11:26:18.879116",
  "id": "b614cb6f-796b-4371-86cb-465d6dfc433b",
  "description": null,
  "active": true
}
Status: 200 "OK"

Restore Persistent Desktop Backup

Restore Persistent Desktop Server to a backup.

POST /servers/:server_external_id/restore_persistent_desktop/:backup_external_id

Request Parameters

Name Description Param Type Data Type Required
server_external_id Persistent Desktop Server External ID URL string True
backup_external_id Backup External ID URL string True
force_restore_from_replica Force restore from replica? Body boolean False
Request Example
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
--data-raw '{
  "force_restore_from_replica" : false
}'
"https://api.console.nutanix.com/v1/servers/${server_external_id}/restore_persistent_desktop/${backup_external_id}"
Response Example
{
  "account_id": "c54a4189-93e0-46d7-a333-d07cab1d4e7b",
  "customer_id": "fd8dc130-cfe6-40d9-8b3e-7af39024e0e8",
  "display_name": "Restoring Persistent Desktop Backup",
  "duration_sec": 21,
  "external_resource_id": null,
  "finished_at": "2023-03-13T16:43:14.600164Z",
  "id": "bf873017-5359-4516-ba8e-91330566abe4",
  "inserted_at": "2023-03-13T16:42:53.768400Z",
  "kind": "restore_persistent_desktop_backup",
  "organization_id": "fefca2ef-e0fc-42c6-88d3-a21ef995be97",
  "pool_id": null,
  "progress_info": null,
  "result_info": null,
  "stage": "done",
  "started_by": {
    "email": "afe5c674-60a6-4143-8015-55d3f9a4e74a.img.frame.nutanix.com_third-party-api",
    "first_name": "X",
    "id": "b93bef6a-0f9a-455e-92dc-5ff52ddd014a",
    "identity_provider": "third-party-api",
    "last_name": "X"
  },
  "updated_at": "2023-03-13T16:43:14.600807Z"
}
Status: 200 OK