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
- Response 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"
[
{
"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_idRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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_zonesRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
["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_groupsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_settingsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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_settingsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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_settingsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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_settingsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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_profilesRequest 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
- Response 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
}
}'
{
"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_drivesRequest 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
- Response 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
}'
{
"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_profilesRequest 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
- Response 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
}'
{
"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_drivesRequest 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
- Response 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
}'
{
"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_settingsRequest 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
- Response 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
}'
{
"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_settingsRequest 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
- Response 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
}'
{
"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_settingsRequest 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
- Response 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
}
}'
{
"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/publishRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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/tasksRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_idRequest 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
- Response 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}"
{
"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_idRequest 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
- Response 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}"
Status: 200 "OK"
List Instance Types
Returns a list of available instance types for the account specified.
GET/accounts/:account_id/instance_typesRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_typeRequest 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 endpoint and specifying the id
for the instance type you want to use
- Request Example
- Response 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"
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/applicationsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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.
Request Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_sessionsRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_sessionsRequest 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
- Response 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"
[
{
"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
- Response 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}"
[
[
{
"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-trailsRequest 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
- Response 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"
[
{
"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.
GETaccounts/:account_id/audit-trailsRequest 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
- Response 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"
[
{
"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/startRequest 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
- Response 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"
}
}'
{
"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_idRequest 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
- Response 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}"
{
"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/statusRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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 |
- Request Example
- Response 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"
{
"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 |
- Request Example
- Response 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"
{
"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/stopRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{}
Status: 202 "Accepted"
List Pools for an Account
GET/accounts/:account_id/poolsRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID. | URL | string | True |
- Request Example
- Response 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"
[
{
"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/elasticityRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
id | Frame Account ID | URL | String | True |
- Request Example
- Response 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"
{
"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
.
Request Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
persistent_account_id | Frame Account ID (must be a persistent). | URL | string | True |
- Request Example
- Response 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"
{
"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_backupsRequest 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
- Response 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"
{
"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_serversRequest 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
- Response 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"
{
"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 for persistent Frame Accounts. However, this endpoint can be used with any other account type.
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
- Response 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"
[
{
"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/unassignRequest 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
- Response 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"
{
"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/reassignRequest 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
- Response 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"
{
"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/rebootRequest 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
- Response 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"
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/startRequest 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
- Response 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"
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/stopRequest 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
- Response 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"
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/terminateRequest 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
- Response 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"
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_settingsRequest 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
- Response 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"
{
"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.
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
- Response 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 \
{
"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.
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
- Response 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 \
{
"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-logsRequest 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
- Response 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"
[
{
"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/rolesRequest Parameters
Name | Description | Param Type | Data Type | Required |
---|---|---|---|---|
account_id | Nutanix Account ID | URL | String | True |
- Request Example
- Response 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"
[
{
"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_activitiesRequest 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
- Response 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"
{
"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
Returns all workload servers for an account.
GET/accounts/:account_id/serversRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
account_id | Your Frame account ID. | URL | String | True |
- Request Example
- Response 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"
[
{
"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.
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
- Response 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
{
"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_idRequest 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
- Response 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}"
{
"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/usageRequest 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
- Response 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"
{
"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
- Response 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"
{
"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
- Response 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"
[
{
"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.
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
- Response 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
{
"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].
Create an Account Launchpad
Creates a Launchpad based on supplied parameters.
POST/accounts/:account_id/launchpadRequest 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
- Response 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 \
{
"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_appRequest 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: name , path , working_directory , icon_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
- Response 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,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAACEv0lEQVR42uy9B7hkZZU1vE8+lfPNuXMOQDcZFGgJCihG5INRRxAVRTGPg44OYh4jRlQMGMecEDPQoqSGzt23u29OVXUrV518vrVPNf6OpEZx5pvn+a8cqyudOvXutdde600l0N//Jxy99R/j8b/88+mp//vrz/Ef4zn/GN5/rNf3eJ/5v+pP+PtP8ZSe7+GGFOjYGlV4lH97j/H8UwWAYwn+sV7///jf3xuwv8z+v/zSTyWwHj73w/9+tM9/rCD+5TU9VqDoMd57LG31eNf2v+LvqWaAvz7vsZSFp+zzLty2zZcFQfBc13cch0RRpIu3bSNVVemy17/+EQH65kc+glcL5Ps+8e3zX/vaRw3i87ZtE6xaDdzi0Q/++Me/fvp/ZeD/S8P9b/vs1cuX01BfH3m2TX1dXXTKli2IjRcEUZak4N82nhPxbwmHACDwwYDg17z4mmv8r3/iE4KL13H0gjTGc//n1a9+1GB++Z3vFJxGg3zLIgHnFQCul3z2s/+rA//w3/8kAJ7UdTz3rLNIlGU6D7fJWIyapkkmDg60rCg4Q/sUMl7jui6BBUhA8BkQiC7+E4Lg8+uEo69loAAV5B99/IpXvvIRQf3yBz4gEAKODxKYAUTghYF06fXX//8A+Edfy/mnnEJnbN1KG1aupBaCjZYnD3QtIcg2AmwjMAwADl6QyUep3HEdch27fdJABfiC73vB857vPfxhAp8LAPApYAcGiuDziV75ln8Jgnvz+94L6ODPw3n5HF7wXv8lb3/7Ywb/e2CWPQcO0JGZGfr8d77zZEXt/3yjP0Xn/Fu/rLAM1H75hRfSypERahgG6bpOaigUBM8/GmiOKtO3i0BbtoVbmzyAAbfIUhcsbXFUhXgsITTrNWo0mkI0HhMisaSgR2Jktqq+ooSFno4OoZDP+zNTU2S4th9OxkjQdC8MzVCcPOxFxZBgSb4nCgFAgALRFyXZl2SFZE0Dw8jBdfguDs8lFUyk4VDAOipAWikW6Zu33Ub7jhyhAxMTf/1d/58AxP8zDIAsF16MwI/09JCFRmV6thBUrs0qN7bQznDOZLQ4scjzHEt0bFPwJU2sFwsCSoSY6ugNCr3rOEJ3b68wMzsrVqpV0nRd6OruDrJYCYf9uZkZIdfZKZBh+AcPH+aA+h19fX4okfD5zymV/Pr0NHnNpk/1Omm4oPBgn9swGl7Lcz1ZD/miovkCMwdxWRFJUdRAc0hHtUar1QJAbYqjZH3phz+k3Xv20OTk5F9+7UcTyf+twPhHAuCxLOJ/+Vve3y+88PzzaS2EnYjMcxAgk4PLGc7ZhYDLkhgEnXwAwncECXnoC5Io62ExncqKlUZDmpmbE5CBooijI5cT8gsL4sjSpZSfX/Ar5TILRi+XTpOaiIv1ZlMsV6tCKpfzUSq8SrGENBe9QZQaCbEs5AsiNRuC1Wr5GhxFCXQ+ODLiAhxe2TRdRVG8/PhBr9VoeeFEGMJA9gRJ8WVVg/BUSUD2gy6C4PP3kcAKDQhIBvBiPk83fvCDT9R2/20gEL72rotUz/FRNwVKJCNUrxn+5e/6rn3ru58vXPqv3/K//u+XCS96+1f/+qKeCKnHBKxnn3MOPePkk4O6jgwNGiqgdxZxXkDpqL8OAIC4u66UjCfFru4haQbBxYdLWiwmNapVUdV1cbFS4frtNy1DS4W13OT46FBYl4YKhfnh4txUn22baUWiuGs0QgCXbNou9KEAHMkGuNyRVK0WCkVK0XTnPCB3pKuzd0yRtCORaHKuOjFd71610pfjcTIACgdgKuXznuO63rLBQXdxdsrLZdPubHEOb9U8QVYRf4kcXwiAwJqF2QwWlXSwQ3Vhge7eu5e+CVY4hr+/Cww/v/VKJZNJCuWaQaF4glyzQpPTi8Q5VZwpPwIAAgCAeidYbKHaalkhAODJdJH+ZecIPcp9WrZsGT336U+ndC5HOuidM0NGw0hBpLmm2pzpCL4tapIuhSNJuWoYIoItrzvhBLFUr4smshgc4C1WiolWaW7DzJG9J1N18gRqlVb4RjPnOB5XBGoZHmqzTNGIHHzHeFih+bJBuwoe6bJHa3My9eQ0WiybBMohG4Kv3HTJtByqmj7ZpFRTqeR4//JV94e7ltyV7h66T5DDk3WUFQnOAtfvtep1d93q1V5hetopVwswIDZqhOSSqECKKARwsQ4NHImCNhXxfaPQNR40zrd/+lP6BnTCPwoITwiAx3ojMwAD4EVv/+aT/eDHPOey4WG66Oyzad2GDVSp1YLAc82EcIMkR3uB5pniybPERDInhbWYdGhuTkYjS7KqSuPT08KWrSd6tUq+vzh6z3nNiYe22YvTx5fKzWgmGaawLlM4FoZbkKgjF4OAVGlsIk/pTBJ0oVHTgnOwTPrdngr9adqnZ190MYmHb6OuiEuZODLWIkrF+D0FEh2P5ostCqkCNQ2OpQTnwbaRHDXZsY/ivb+L9a3/YaZv6U5VVpxQSCfXtt0pgKArm/VMu+4sFhbckKK4r7z+Ru/T779BkFEeZEmBPBXYTvLrA1Dcc/AgfeSmm/5hIHhSwfrauy7hJKSHGeBJAuAxg3/mcccFlK9FIqSGw6BHP6iP4HZkvEUSMl4SPMlp2VIu3S03fF9G0KTJ+XlJUyG2BDdeGnvo/Hhr9EVRq3hCdzasdC0dpD+OVumjP56gk1bE6OITUtTR2UVT81Waz1cQbBcMYBBHrd4wYRv9oO9gtuzRirMupZH+Tvr1lz9A2aSCYLgU0vCdgb8QgKSBtqMhicIqUa1mkh7S6HcHKwRfQuf0tKjcAEOBAaRo8rCbW/vD7PItX4+luw8fOjQqDA4MeKVq1ak2m85QJumapWkXihEoUoFNlDlRCfomUEKCNqgDCFwidtx7L30fjPDfCYI/B+xr//ac9r/Zaj15ADxuzX/3u99N/akUNSqVIOORzfgWUPqwcORbuDVF1EdJVCJyudaSQ7GYHAmFZMuy/VpldllzasfLxfy+i3vTSrJvuJOGTtpMhYUq+UqIrrnxt7T+uFPo3HPPo59/9k3UGYH4clyyWhZoHODCvyVVIcd2Aj8fjahUqRoUy+SoMD9PqajCsaBW0yFdESHcABIcDg5dx7XiyQheM2WqtGMxTK961dU0+fNPkd4qUheAw10HZbxX1SWnrnXfJfVu+kzvii2/acJdWKbp9HZ0uJN79zqdXSmnWlt0oFxRm1RoD5Xwj4CtXLSzBobqzGRoBi7h6uuuO5bYPSVAEJ4geE8m+I+wNP39/fSyl72MstkshbjzBrZIYNrnATsEnpD5gmfL+Yot26Ii9/b2KvVaTa5V63427K9tHL7jDWlralv/YIcc7u0nKRJC1vikgpYnDy9SBTH9zT2zdPzZl9IDd/2ccs2HKKLKjF4ymgYremgxBVlvg779wK+7qMWNJjJak1lcEss0E8yQCMnUbIGFAJIwnmOwhKMqNfCYpopUMETKZzbT2lUrqbTzdgp7FYDLg4u0qQvlA3UL53VQhgRy4l17pb4tH0sPbfqB73Cek9uVTjtGqeQ0GyXH8CxHgFj02TGoOgmwjyqOCOsCMEG1UKCP33wz7YRQ/EeD4PEAcKzBf9RRtqWwYNdeey1VIZYioH0dCt9HxosIuiI4IGUbrA+eCacVT1XlqclJOZXOkOY3lld3/+St7vyR8waG0lKypwM0blM0k4X3V+jIkTmampihRq1KyUSYNNbZ4QRVFhdJVyWCMae5YhNBdcmwPIJxZCbwOch1w2Fd40ntHmCBNYMLC2I7jhDRJQEM4IcVUQjJcCKmBzBJpMJv4IYS6TDVKApQWWSjrABHODfRYsmikSGUnoRE1fly8FrbgdjTiEp2eB8NnPq+4fWn/cw2Wn6tXHaSsZhTalRs3W86vqQ5pOgBCGQN3wVikQEA0ACIHl3/vvfRwSNH/qEgeBgAT2VdEdavX09vfOMbqdFoIENM0L6IoCNQNrLSN8lrGbLRdOCyInKio0OJJJLSwsJs3B795etjtf0vWbJuRO9et5bkWJTyU/N08J4HaceOKZRc2EPUahkB0hTUX0mmah1WEalcrNlURcDrpu+X6hay2fPrlisYKANR0HkEX3Gf7QkJEAEzwyK+cR+ofwDlGFJfKIuCvz8YNCLS8IJMWEY5USgV1+AcRIoDIFmUAgn2LhPToBlaABpEoi6SHAU48Jl4SwCYlcvS+I4mQGRTve7QgtSxXRl5+r+qie6dhoULlCR7ERphIBlyZB5ZQlkQ1BBKYyhwC9xZdcWVV/pfv/lm4YYPfpB2PToTPCXdzH9zR9A7rrtO+LcPfcj/68dGliyhBOwdd3w0m01CHQwsnezbQLUlCqIo9wyvlR/64x+VVCaj6pEo+aWDF1Tu++6N61YnOj/8yzJV3DCdtKaTTuhT6MDuQ6jJOAesoYisNkG7poestj0qGRxwwa9WUe+rNjkQZhzwSND3TxTGt2MJyJkKQ0YmsnN9lGimgUDhvobni3hy/OhrmjgaRxuFe/27cSRRpjvgAKooEdnOMCWyUUqFJSGhOgTBCsPikIXPhGqk8Tkj6LE8dXM3xcIa/WZfiSbrCp06INBQQrDn1BWfz6w5+/1wl01PEOyuri67OxZyxw8+xCBwBGgaT5C5btFLrrrK/8rnPic0oZt27tpFn/jSl54oJH8TCJ6SnkB/djY4Tw01fhZUfHh2lir1etAVaht12DuL4MLF6UJTSWY75Uwmo7iNhlIvFVLKxO0f7Nfzz8ysXELTNZ/e/Ok99E//9FKaGz9IiZlfUViEjwevLhRr1EJD1yyfZqu2X6iinlcdiqHuJj1kto4gs5hrgRBw6+FQERd2mYdBEg1EFDKA0rjSlt8OuIF/J3Fr8pgQbutHn4Pwh9YnGsThIh74j8bxBmCHDiFBKwBDT0KhobRCUZT/bmgAHazUkQnhezvByGNJCNOPDkh0xRWXU3H372mktY9s7t5WY2ORjc9+Tbhz5G6IUy8cDjuF8XEnEfKBIxcQByWxNmC3wE4JCRSCaL78Va96RH/KUwGCvwkAfj4vCLmc/3DgHw7+FMTLQqlEJXj8lmng4nkMvQEA2JIlxZT8YlWG2lVT6ayg1MbPjB36wceXre3ukrsGoITDsEH76Ls7RDrrGefTnd/7PG1NlyCsLKo0LDow36C5movAo4GR7TnQeVrlAApBh0wKNbfcggNAExg4PB4VxG0RlJxB8E3OdpcFKFEXylECjQsZGrx+RRiBx50SA8FrNwokANWpDQZ+DzMCs0MISDmEOxo3HspGMaZQf2+YcnhiWYcm9KR1Ckd0MmWVfjzWRac9/RxqTu6gZa37qDMVwTV5NFtoOZXUho/1HH/RB6utliMrSlArWtU5GxrG9rgDSdICJrj62mv9T3zgA8Kr3/jGY5lt9d8HgGCMnE/Q3e2XR0cFDn4ZNb8G2m/gcBB43wGpOoYsx7qU2YVFRdd1Bb5c9I7c9bre5s439q9dJsUHl0H1Fmls3xjt2TMWdJIksl1kVgpUqjZpAbV1vub4s9MNX6haArJVGESNHoEyT8YFSieFgMrhunjMJghkRBMJyU+LiHoVKJiEBgih4XdA2aeOthJneAwg4NcNEgPDp14kXSxGNI/z7DfamR89GniTuE+UKAsAHGY2wb8rOGygI8QA0SS/ZzBOAzmN1vTFhIGeBFVNDS4CYtSswE7iXPi/kY4QKdAshXKT5oSuO53hZ1wZiqcKluM4yUjEbi6M22gjxxNVD0BgMwJNAKcSsKlB13/gA0/EBE8KBH8fAEQRrsmXasj4yULBn1lctA1k/kXPucS/9QufROk3ZEfLKrIsq5VKRWk26uHu4h035aTi+cMnn0BqaoDmDuylnffsoTKYQ/Hh3w0HmkxE0C3aM1P3Z7lgo8Z3iqLA3ahZ8HsOkejtBJ136WigOGU6k+RKHCqIKEGhkikG9k5AIqnQHiWwRhFAKjQMkgFOAUAtAS0irjUCfVJDQFFRaEjygxKgsYCQ2wFmjZnE3TEcvXgsicTkkm/i6+dxDEbwnMXsAjDgNa2o7Ge7onTysiQNp1WBxUgcQrIKQVgsNamrI0FpWMWORIQWawYdRLN5y595eaJ7+KF4IuHWCwW7PD9re75p+wCBDxbgcsC9hhyssKbRq9/61qcMBE8aAH6lAp7FNwYA2OFy5nPdrwOh2y64IPjgb37pJsH1fSj8IRXgUOAGFNE1O2IHv/X1/k55XWbjifhSGu390wM0uneUXDiFWEihctmgqZJJExXb3zNVJQ3306CEFawBbIHQrsiuFA1vHCQv3EOdfTH4fVyTjQDnWYxxX74LJe6Cql3IfRc21IUgc2ly3qWE7tJ02aGM7pGOwJeKCEqzAQFZozRMngH6GKsRre3kvgafDs1S0CmG2AUtuggApHDMgB3m/TZANmnMJETTAMAhHHE8hrfRkqTmd40kaMNgXFjeE6UI3ML4QhnqD7oBArEPNUtG+9VQ4vZO1euxzZdcrXcsua1ptFxNFO1MOORMTB6xfFH2FLaJshz0FcSjUers7KTXve1ttHPPnscN1d8KgMezFQIAQAwAF8fo1BTqWQFK3KRnPec5wXu+fcunBZwBtN/JWY8SKsiS2xganP3edzuX5PrKnGJShPbuOEAz0wsUkX0IaAHawaAjBYNGFwx/brpBIccXhpHtS1LI+pROvcuWUiOznDqSSRrqglcGCauyC53h0OS4TWHFoWjMo5kCQGC4sG0u1RF8FUpQBRAKZbgD3N43xV3PLg3rAHDDpdmWEww7c+dUqdmiqFGjsNuAPvAI+pJ2V/2gBHDpGMWxHq0zi6+wgH+jWlAfvmEO9xsASRn3oUGpiddkUBpm0FxLhlO0am2W+uKSEJYc8hDIRZzY8SWwk0eD2TC1mibA0XSEZee8KTKw7ivQSf7C7KxllBadWFS3VD3sqZpOoXCUwqFwYKuf95KXPCWa4MkwwJ+BwSWAB3P2j4+jYct0wbOf/ecP+s+vfkap2qoSjUZVVAilMn9kxcDs97+9ZMvqLkvN0KEHdtDhQwtULVcQfJAJsr8CxbV/ruUfmGxSq2IRD5eMgO47ImE69WmbaO2WFdBEMpVKDgDnUn/OQUO41IDiri4ikyEKBzJOoOAWFz1kmwc2cakjCxAgyAbsYanl0eQi7oMtOnkMwsM5BBde3aEyLCWKGXy4RzGJx+8d2jdRpzjKRQ31gev9PtdvNwA0wBGvbRnX4gF26BvxWMzlgBMl8FgWJSqL0nAQuQKnSo2k7g+vSdGJy2JCJsxd4QqNQdTWAL5cIkyDHTEyaw06NGf65sDJ1yu9az9DnutV83mrK5WwPbtlK1rI08Ix0gEABrAJPcDu4MXXXPNYgT+m6epPFgD0jre8hc48/fSA8g3Upee98IV//oBvf/GjcueSTerk5KRqWZbSKs8tSY1+6weznttx+x4efhVpUwdzqkFxCDUIBjqcb9KhBcsfnWmxHxOWA90xNNDqTZtp83HrKQaLlUBm6yGeJOLSgVEnoHKFs0lwKITDRH2XoR9k1PypOR/CEKVpGlmGLI4h06MaT9lyaL7oUQtgGKt41IP3Owh8E5ojhHLQmYK9hFfsiPvIUoAGgFmYh9toNAEmi3YiwKPBnMM2/XOm9+JgJzGMg3sA8RYaQYmwnLYVRXxoHuViHwNDEv3EyhQdtyQqDCSlYIJr3REBApsKoIwdEy2cQ6SIUfP7TzrvX3LDaz6v65rHkiPICnwBNRQFCKK4BinoLWQgPLR7N33o5pufKHaPCYInAsAjxvc3bNhAV111VTBj59V/MY361s9+UKJQRp0vlNUlS5aoi/NTfZGdX/hxR4/e86FflMgNDdM5286hB771Htq6NINsrkFtg5LHG/7MdJMyvihk0bqrBwdo69lnQjixqHNhtVzKIqCxKOplDXUe7wkDAItlLgMOaZ6NAFpUrziwi1DzYSYCHs+H5+ZI4BwRAGA/qD+KjFfwXK3VnlDqOl7ACGG8jjuYdJ27fVGSwh6FcXgFmxLI0sk5lw6ZFlyER4dwxiKOPhz9OIYQ8B5k+55quxzcA7uQxeOr0GI1nsaG56EBaQ/qCF5GdnfU37ill1Z1hwRW9nMVk767q0Va5wp67vOeRz/5j7fxQJy3+rTzXrd8w9avp5JJL5vNmod33WdDc1mKHgF4VBCEH4CAOxJf+ra3PZYofEImOBYG+PNrhoeH6YYbbgjqPw+r/vNVVwUn/cqn3i82PFUt1ww1k8lo9UopsdH69c+SWWepp8bpP749QUObzqNEPE6VOz5F3Umd7t63QDtnDX9xAQJQlIReRaIXbTuVOlevB8JBx65DhZoLenRR83CIPAcQwQO1FxDspYMAQcEhGYGJy2aQdg1YQQF+3EBm8xyDmXknmF+YAT8XUSpUlIgFlJGRpEdzKAeJKAMIwR2zKaN4pAJzPcNwArBdTeiH1pxDEQCtjDJwH+zkAWTcbhzcQ6gfBQHf9uht+zmNjx0U230JI0DBPEQBSj1N4D6wS50ACHdDO50RP748R+v7VMEGAH82JtPQiRfTIMD/i09ej+vTGJD2ymdc9n+WbzrpN7ZpOofHxizNaUAP6LYg60gMmdjr8LB1TNfpgpe//NFA8HcD4L88/6bXvIaGR0aC4dyXH51Df8sn3iuEImE12btSLRQKarlc1vrnfvztwR7/ZDfEgxsi3XXXQWq4EUqoqPn1Eu2arPoPHqr49YIlrtAkKOYYrdj2TMp0ZUG/qMGoy5mIE8wDLMGfqTLuI1gzM17QHWyBvqOo062mS7pjUI9qwCcDIKJAJrg4D5Awvc9BI4yg5DQbzB4ccGR+BeUBh4ySsATPVRZs8mpgEWR/OIFs7ULtnvQojbKjogRYMy41wSYHUQIO4/vuB6B6BTdwwdxP0MkHgINEphICvUprB9lD4EuoE4NpAAIvhL4N9EAF4gGGhGoRzV+9OUdr+8ICa4KCkKVpIKY6N0fdMYUGczodzNvV4fOvepZpC/ti4bCdiESscn7cAgAcUdFJ4QMAeB4S8d/f9Cbh7e9//xMls/+4AX48EKxdtYreAgCYyICXHaX+L370xkDxT1ddDTSl5jJZST38sxs7xX0vy27YTJN79tGeBydR61uUjKhUt0SIPcPftafk1+dboipJdFJvF5140YVQ8HogzKqmG1C4iLqsgr5ZgnWmuX8Amb/Y1gEaGCGqoYYj6yMOametFcwoqlkC6FmG/+dpYKB0DXYQYtEGUHbvx3kSDi0ueMFI4QLOJUKFZ6BjfMemSMgHsARyIOAiYAgb4FmF8mPMcjnxaRzB3IP2K4k+LdH8wB3kqa0D2PZlEeQwWiXCHT4h7vQhiDSUCDABT2BkNtiPF0bxGCpLUEamQ4q/eXOWVneGBJ5wMj5Xo+lFi3pSsIoyr3ASqS7rY71nXLGtd3C4vDg3Z1m1sqWpqHlKyJPVML6nFsw55OMt73437RsdfazAPyoT/PXq2sdcy/ftj3+cPE0LAHD51Ve3s/8/3i1Fuoa0Q0cmNXgpOdY68oLj9Ps+ljl+nWAZMv3p1w/Q2OF5CDWYNtejAyXfn5qx/L58U+T+/f7eQdr4rGdSNALhh7peRn13LbZlPJMHgeOaDRZIwcc3IN6mETQBGbiiF4/FHNRzm6rjDYrZiA7EXAsSvYT6qCV8klFGqgh8RyfOA/51cL69h1g7eDQcb8/5E8HVzRmL0khnA9dogKEWmdYjPim2S6tRhqp5np2MgAMECkRmExkOp0pTZpsBqkcB0IOjA62VQ/C7wQgb1oLqke0VnNDE5U2UKBgtnAMTREJtbcACcUHSvMHju4WRpCTkUiEqNCwqVi2KAozZiERNJEQtPvJLfcXZl8FVubrnmbpvWq4s2JIa8SU1RJde/Ur/qzfdJOzat4/e+7GPPVYpeEKKf8yx/Q+9+c00MDhIvqLQ89u1hr704RuElhzSOnLdmmdZ2sLEgZHB+e/fPrJ1KCome2h8zzjtuPcA6QhgBV9oHMfYpOWH85aQQ/BXLR2g3DkXURpUmQyzqneDjObOpTrommcGtxAEHmnrz6KWt9p+3kZ5YEHIvp97aKJmneRyi0QEy8RXqIQ1KtpiwAgsFkWUi0reDcSjhcYkiD12DlGwA+GcJgBgwBU08dWPOJz9YBEE+3hYzW7ogFIJohAZP4OsjaZgL5HBs4j4TL0d+Ie9P/cL9KL+b4kRdSHAfRAIJtChI9BwvHQER1euPfDUi9vxAs6B5+fw+GxY89egHJwwHBeiIZnyDS+YpJJlUQrnMZVvkT249Z2pwRM+1dnT7YRE0Zw9vMciTXcAgqCn8LJXvcr/1PveJ3zje9+j39199+P1FD55BvjpLbegDlrBAMvz//mf28LvI+9Va6agVWs1bWBkRMtOfOPH3d3OxsjIapraN00P/GkPhaDSDdTm/fMtOjBleP2FlhCXJWH10k5acdEliIVMCsSdRG0/zkGvIiga3qcq+DeC1kDhTKL+RyXOWDync+cPSgNeL1sm5aw2ALhvlvvlZ6QQeTFeE8jCkV0E3ofXlxdgHyMMLp/qEIL9PXAWAJyPx0sQhCVkI5KdUoMCAuPTatjOziZYBP9uIhhuzKd5ZLOP4I4jaHNmO+izXnvAKCUFk4qpH1I/hwdWZOD/gY48Xl8zeZ4A9EWCJ4JSMJmERWMB5wnh9eOoB6OxsHfK5oywYSAiKEi0UYjjZs2g/qQSzFXMNz2z88yrLlD05E5oMEv0HCs/M25KsCysB17y2mv9m977XoGnlr3sda970gB4zOx/1rZt9MKLLmovquRFka94hf+VD/+7JKgxDb5UL1Vrkj322zdsiE++qeukrVA/Ot3x09+T1WzwxA+aKDbpftB+53idOsOSMJiN0eZLX0Q9gzrNzTo0AUUURbAdow0E1gGLEG0y/t2ddgJBl4xwp0/bDiag6FtgiCYOr9qiVLVKcWiMBoQdrwa0O0O021Bo1QDu45xxlAoHr81POXi/R1HYu/secmgI5+mHuJTh+ZtFZD/M/WGeFdwnUA2UfxwAl0XxnpuDNoDl0pG1eWQsLzlsIdi/R9DgLMFcwagtVY5uS3E2gpxNgS20NiPM4vbeSQpmHHvQF0kAYgjnSuB1lSoLTl7QinIAmziXjvkrVySFFZ0aNWxcz1wDFlKmwWwEtlShSTuyJ33ci7d5nm92dHRYs+MHTEEQLEkJUzBmgPi89LWv9Z9/0UXCt37wA3ocAPw53k/oAq5//evxhVLB8ixFFknyDUFyfTXRv1RttFpaIz+1gu75wu0Dq7p1S87SgQNTEO8N6oCSHZ2u0P0TNX9htEGnRiQhhSK4+pkvoIGlWRJBwyzmpiCyWqjBXJMVh9U1j4i7wbh6LsllAVmvHRWGeH0nbGEVoJE5systioJDRUhwO2ALnyQA6wBycgkynK2hJqNMQFDWF8AyiFQE6v7gXgQdmX9cvxtoE1b0k3mfJvCWCoKUQ7b3Qj8MQ0vMAhioRJQaBrtA9WURuBJq+/4W92jr9GAK1N3RRVUxRNbkLC2TDYpLBulhZD10xfyhAu0EOIoIcAmtfSbO09nbHl7edwAsApYoo5zYAEpAMCOdtHVFQhCQPKWmRZYgQhDy9wmhnQRqdm99b3bZaR+en59zQ4po+FbdAgugQXTYZYX+6ZprntRWPY8LgBdfcolwximnBFOUhGDI1OEhTVkIpVRSVS2RTMpTt/3Hf2bUEgx8BxWB2Dx4Umbfi4v/0+FFOjJj+F0tX8iEJFpz5pl09gkbQHsIOCg7X+R5+k7Qp6/x9DgEeGYOAYbgi7D6T7jBAtAmlwXFDQRgNsHsgNequI/PYwBQ2aLFgteezZtWaCyhB9rDbdjUG7MpgXM0al4wwCMiKMwg82CfNDI8BOneQGFeqCPQ4XbX7ibdo0GvLf6qOP0CDzGjtmtc31d2kt85QrGhZUjZFs3vOUTVfVDe9QZVUcK4s6dG7R7CHGyp1pumVqxGO4tWIP6qKDU8eSUWaa9240kscxCI4zjuwnNjsuhvW5Wik4cjQkQR6OBcE2BSg6XuSZQCR5CaqVNfdnoykZ1sVKtmZXHOTMSjlqCEfZ5Sxm6Al69//yc/IbDA4wnCgAUed07gZz74QSFYrsUch+Il+SbsSlhV4zm90WyqtcmHzltR+/WXPvNAi/YsyLBrcTozk6cILnT/bIP2TBu+Pt8UhkIKqLWfNpz/bBqBgEvEEVQE+TA8tiwwDfMsDAeZwModgEAZiCJoYWR+PIw6zUKywTNwwQ6wdz5Ssr8b752tUmahShLOdYh7YXiICEr+SCxEArRHRrRJAcASANg8ajlP1PThDhzUfB6JC4O+uzp8Kjf8wAXcBVr/A1pjK+zhCJhhANk+CQA0kOnrTl1PqfXryTw4Q619h6h58FDQFdvoSdKk2aR4l0bfmkFNb9Xp4m6VusFkDYDSA5PYEVi15RLFM01iuTI1QZTBuRtghWSqHQU4WRqFMNyFa5gJqf5Fp3cKKzrCAKdN90Fo/GLUpeVLh6nLnKD1a5f9WOo//aWebXm9fX1mfeGISWoEgjAcdDo4sLaveMMbHmuzrGNngFs/8xmBpzEFM1XtJjK7JRcbguaLop7LZTTxvs/8visnjnzgDovWbDmXhoeHaOKHNwAACm0/hJSaqNIKBfYGQubEF7wYSI6RpraVvK7CYpWdYPGGrjJ9Q63XWLTh8xB83+Q+f15PB8BAkMlggHkoch7pY4+vQgwmeNXu3grEoANfzyuK/WDJ07SmUgz1XcV151jt++1snkUwY1DWEjsC2wsm3cTiPk8kJQNHEe1iJYlWQvyZSGOpI0mRk08lNddBNbga787t1Gy2yILBL2gCFfD6eytWUNNPXkN0YBpBRSDD0Am4RMrEeLIJrOWYT7G+JO0OlSmE7M8lAjNCiwh2OtkGgYtITABAd4NM7oM2WLI6452wMiEKLZN+MyuRNriZrrzqSvrO+19NG7tFvzVw/oUDS9f9KRwKmQvTR0zHNi1Ri/o8nYyCVdT+o4HgEQt1HxcAX/joRwVRVtpr9ey6UK3V1YVyS/cFQU17c5etMO770MgZa+hbv0L16jqRQlaB6jt/SmNlmwqjNb/PcoPRr81nnEB9m7eS0Wh34LCSr8HTR6Hum/V2J49nQ40jszXcdsBuNXFbmLUDHcBFmpmgAACoCODMnEcZ+PtEsU4x+CsnEI2g9pYfjFFMixL1QTjaYA0Wk7bZpno1Dmque8F8Ly4XMAwk4vHCAgIP63cYH9Wd9qhLTlLXs86Cns1Q6Se/peaBUbCSRw1ZoikEvgSW6gAxKiGelAL2x62OQBa5XKAp+hB4G3UdzpnYrdpTGtXGTdJOiQJxddA0qhZep3EXstEGQB6WolBq28sCdMG8J/qdx3dSD1rbCkVJXvY08iWdxF3fpu5UiObFjruWnvGy55imwauVTdGqWrWWZfPEUl6qftUj90R68gD45I03CoqOD/UskpyGnOxZpnnI/upiUW/e9ant65ZF+qNL+mnHn8ZoanyOIEpoDnQ6OmX4PXMlQQd41gyHaeNzLyOZF2zw8i/XDYDAizUcZHc85ATLw/LTUP29Dh052Pb74S6XFvZb8NGwcwAgA6dY9IKpvA7omreAWSbVKDNXoyoe54Ednj/Fty18Le73900e5uXXonwgwGrIhwvwSeapYGAKAzXaUz06MAY2ACBqnTqd8txnkhpLU/H7vyL7odFgPqAIpjBRV8d4oiCaLoMkg/Cmjp7A9FAVX20SdB4CCMbAAjpeP5hFYBHvKF4nN0WaRW2JrgmBOeoof7CE0WB1WOAAmrCJRq0tBps8prDYnoL2gKT7J21MCCu7olSssyj0qQdsGoeeWmg4fmzzZZckOke2u55nlGZhCWXJEtRwsCD16uuuezwA/LkMPG4/wH+8612CAjqVPZNHQVUt2aEpiqpRfs8Lu+du+2h89UpQnk/b73ww6OXiVTf3T9Z9Z3+BNnR6gmzLtPbpJ1H3mo1B8NnKqVDvPKdqIg96jraDz2oov8AdN6B+XsCJ4KrQCmYeKhhuIBWyya7aKC0O1ZDdSlxAqXMpVaxRGiljtxD0ph8AgBmAO254yblhCzQFYXR3waBJBLsJMO9pNIOgLo/HqRPOJq6qtKtUptPxXZ535mqqfusX1No1Su1xxLZIs9R2zx336QeAwEd1DvCaQQpGg6oIeCNNdOdDRKuWIMkR3AzYpgEqj4IpDARUmk9QpLNGzT6P6njcQqkoIeA6T5nhaWjR9uyjvYdQCqAFLDR4RRD8+LpOOmlJVOBZTrPV9rY36ZAcXFsj0ntHaNn5l9SrVU+WZSOuuaYvsyPQ6NVvevOTZoBHAOAjN9wgoIRz7Zc6B1ZoniRp9XJZ9R/8wq9W9YVWKwMjtH/3GE2MTlAMFzVeNOnuXYv+qlpd6MsqlI7ptPqiSynBk+u9dq+ewbNhuEcOdV7gsfyjCl/mHrsSCzPoAbwuDApXTYtnFKNmgwlgpGsFaIcu7u9nVQyVf6hBw5VaYLdaYB4lxHs1iLTdlOinAM4f606wFPtpS0Zo69atdNKKFZQZHqFQXx9J0SjKpUquYVDtgV9R48e3UPVHO8gz2nP75nWB3uer1JlM0sm4zvUO1HirRUxk+FoUQbY38VpBbQNgMYPHQOWTU1D1CPimzfiKAEhlHszAM70rWWiaAs1xGeL34T1ZgAaakcq19nT2cbx3tt4eYeTBJGhkmodoOXtLRljeodFCzaImrGB3SgvmDsxWLL81eO5ZPYPLd6cTCWNxbtLyfWSrFqFXvfHNj9X9e+wA+BiXACDPKZcVM5zQu3p7dbW1cEp839e+27d5HTlimG7/+V2kgKJ5Xf0D0w2/+mCBVsd9oa9DpnjfGlpy0ilkQdXz7Bwez+feOR5oYesqos7XShB4Ks9wgdKft4M02FtBRoMFzu8HEda5q9amrGpSIw9VHxOo1a+DeWBNDzSoo9AIFnKiENIvXJluKVUpb5h0wfAgXXTWWXTq055OaiZDwlE3oyDzPdMMOrbMuYPU/P1nqfyf28ma8oJ1A1xJei5ZQYkrrqHqIYu2P/gg/efPf04HIf5OioboOPD3FtB4SGsLPg31v4WaPwtAWGJ7MoiFIBqgclQXiiCz0wi0XOkEdRTIhXbhOYasPyooF3xZUYCiUAi2IQyWTG7fB9AAaBO4TIcHl9Zl/a0jESGsijQNFgCZUX9GJ09QqBAauTW9cttrJUn0PLNpGI2yKahRzgS65s2PCoJj1wAffy8AAOs3Pz2vUyypRaMxKbFwx82ro4sXxteuo707x8EAo5QBz02WTbp/b9nvm68IfTmZsjGJVm57NkVzKaqB+ptmu/+dx9k5+3mZl8R9d/jWoaMjewwGdgXTsGyLEIQbQgbJqH0ZFfRvm2TBNfDcu7mkTpYmUhr1P1s16XYwwq31Fk2D3p8zPEQvOe8ZtGTLVnKbTdJyOXI5c9MZEkOhwE+7zQq17vsKuTt+QKUfGsSLlHkI10DqLXn3c0lacRlEaXvCBe9FaBcLtPcPf6Av/ea3tKtWp3WI/htyFsmFKmwaWhMBHEWtl2JtAHV14/7+dobzzCAeNMrWOsmIFEkedIKsX4ToU/F5aAZi98aRqEH87d3X1gbAKc3hdRVmhojuH785JfTFlUCAesj+TFihZFynw3m73vO0qzcJslaeGh83FK9pxdI5+7X/8s4nzQD/5e+m972Px/BA/03Z9kLaXKWi+66Z3dD6/f3LRnIhO95Jd/9hZzCjVlEEemCq4ZceLNKysC10JxTKdaeo77RnB2KNl2nzHD7u9KkAAALu83p8FnZhjQfWAQYGBGjeQ3rsHKOgK3RYRuAWWxRFGcgqKAcmDwp5NA/oNHv1YC72x6ZrdH+lTqtQeN9yzlm0auVKaCCNRCgxNZU6utzdIwX/5mlYkr+HzAc+QsWvFMgcYxeAjIUoCw/Bu9/waqTb6e0dx1ip8RQw3reoAqcR7BTq0r133kmf3H43NXHOywDEU2pzpKR92o3LyUAUHp5sLx7hJWkRzm4wgyoLlN0XpSOpGsVABEa9rR9C8baeAHYpjtfV4CJqi+2SkM22O4jmoBe2G+Rv3JyhU5bGBF4dbfDKIcelXFwNprtbfWe8TkgO3RoLh03Bqpu2i4aUw/61b/uXv40BPvvhDwtOMOeM1+Q5qqBFdT2eUKtH7r5sWePeD2dHllAR4u++e3ZSFLRUbjn0p0MVP3lwkYYyojCQU6h3/XrS+jYGnSU8MbMLJaDFM3AR+FrFAWh4qhZ0ARCd63SDbKvPWRSVLdo/xl8S2gPZnWvUKa3YFBds8lo8oucHAb0jGqEPHCqiJjr0XND9K044ARmukxwKk8ybUGRz5NRrwb9FiD9ZN0ksfZWc8Ydo4RbEstW2cTYipW/ooO5/fQeAECcJ3sxDkfYsO2ALp14PtnJhrWDl88FnVMtl+vSPfkzbIR7XAGhvTJhggDqlkPmzeQS1CSWP4KUjcAp4rGOgm9RfzVF9S7tnESWaQE4B5fNAEs8aqhTay9h4fKDOLgFsMsfdxNxBhMPqi/oXnZQRVvYmaLRgBSI1F5HJRqJMe6m7lj7tyot5w6t6qWTWK/PGG979AfdvZoDPfeQjAnfBktMUQqGYLqghrWHaYvjID7+7sdM+3Yj30gM7j1AJ5pWXZI+Cq/ZB/K1xWkIuIVMCKbD87PNIjmYgzoDUXNvn8xx9gYd5G+3u32jECWbr6FD/dWSzBA8kmQbNzkMAZiRqoPb3V+uURKmIyja5Fnw9UuY7dog+PJGHYJTobevW0knLl7U3tOD9hni72Eg4WGvAtB9sAjq9k8Idt5M1Y1D+K22qDrZoQSZqp6ym+Asux/sAFIXFpUg2Ml5Npam2by+pEIEmF2huNQfWlVc9cfSgI77y0E765dw89QAUly6pU2esxVseUAPBn5gjSuBzOvoABMpQuF6kytJ2hvOfjMjXcdpiEcyBUlFBsOFYAwBxZ1Ei2dYTE/PtvoEpWfJPOauXjhuICCYptAAmBNEGE22nK7ZljFx4Qigcn3Ety1R8w/Ql1b7uHe/+2xjgi5/8pMA7dIl2TfakmGY6ji6KXrbnyFcf6O6M6XU1Rzt2HYH4M4PJlH88UvUXd+Qh/lxhIKPABum05Oxn41aA+OJx9/ZQbhEqn4d/a4sIftgNxgOY+tnUtCAQywsWqdUWaVD/oZRI8/BCQyiYESiqNGwhe/zP11T65GQRX16hGzeupS7QuiIrxP0VvAuIAmYIcYtyIV0sQLlvp+zzM7TwtUWq31FghxQst+LgR593AikbLkC2u4FQbI6PB7cMAA4y72DCG0LyPsEW0pI3seK+dqNUIhvP8/Z1v4Hs//HsfPDvf17Toi61iWQgXvZPwC4NwxYO9g2SLYwHeoGD6tTau8QE25XKR1cj28GeBTR2hP02DraPeP1Uvs0mRVxzfH3WP3dzJtjX4EiJ28OlnnSYLLBqPnnCa1ODG7+B8mU2irMmrtt6/Ttu8J40AL766U8HW6h6uCKzXlX1eEazbFt3y4fOX1K8/YtWppu+fMciJb0ybe4L0yKCu31nwQ8dLArZhEBremRSYzkaPv2cYHJHGcKti2f1xlw6fJgHgdo2bzlon3ff4JlARqs9dCsj0FGjRdYcT/HyyUzJpFcMyiLbeAzg916cXr9/hiLI9reuXE4rk4lgipjZMmAFKdhVNALu5G8tHTwEgI5S96t7aP4rM2Q+1PbyerqtvuPPPIOc3CCJCHCw6ydan4NuozhbEHrBRtM8t481DB7nfY1UnN+EG9DCOrXA1RIcSxmvv22+QHcCFF0A/ks6KlQqtagbGTzLtA4g9HDfAJhgYle75uuRdv9/YZaoewD6A1qghiCXEOwj0CURvCcUag/BsPXn8Yjd3DXdFfafc86AMJBSaLzi0813FiAEI3TmIJ5L9v0ktvzcK4qLRY/MhpnLpYxrr3/PkwPA1z/3Oe6TCIZNwaGC6LnqYtPR1VBYisz9/qNL5ckX/+vPCxTqXEUnb1hG8bGf0FTFoh13z/nZakOIQQwu6VZoYOUyii3ZhAxwaKHJky1c2pxtL+bgPgCe2cvj+jxZI45bAy6hVYfFQ+aHwQARKH/Vh2D0OCguJcGr+XCItt07Tzoy7YV9vWCbGKURENYDvI9wFn4LJoiG4N+Vg/sh7po0eOMIzbz9MNW4dy7UzjLej4dWH0fC4ACyuk5hiMMWajpvX8PB1iMhlKhmWzge3Xmct3nj7WoZJMHIKG4beI8KRijjfQUA95eFIj0A5lifDNMFOq7TaC8icZHNPWuQ0dCj8+Ogfr/dfxDFfRgbsNdRAKAElBbanULsSrhECbzODNc8CmF5AGDajzLwrHMHaVNfSPjFIYfungvR1VdfTTt/913KWoeLtPySTY7jNlOxmCl5dfPad77ffjIAEL52883BHj48qCK4TdGySNPicR135Y7Jb9zZE7WWbV+M077WCA2hgdXp7XTfWMWv3D9DA5ojZKMidaN29x13HFT3EEOJSqjtM4sQeime19fu6CmBvjJJdhhu0BnE9C9DdGmosWkyKV5vUkwCWxhe0E3KW6m9YJxtnkFndeRoDYIfUyTSRSnYeyiCVrRA/0vLefJGpyh9qkq5ywfpyPUHyUMNldGQPq/2zWlU71hJi+BX3pfQcHjamR2ssDFsJ9hPkBuet3qN4DEFhtsOMj4UzBsQAT5eo9dCSQiDEZoA7CLA0kB7FnCe+8sVug/HVcsS5O+eDsZllvYjy9cDfHAb9/yBaAROQUSGmxB6vK4xi/sL8+2Ac3cw7zwL3RuUgSLuT1XaYnL/fHtF0qqtWf/8TWlhb96n1vD5cFt9VP7dJ1AiJZI3XHF2ONn1EDBllubHjNdcf6N1rAAIbr/0uc8FGxkG+/e5DSmR7tEqrZbu2c3uNcVv7dDimlRyY/SHh2B96nMUCmt02/0LvrxnQVjfx5MlJOrvEEgbOo2kaJZqVZ7I0Z7VwxnvoFbpYIGZGV6NAxDEeAGGEwwGSWhMBSCIQVdEkMkaDL8T9L379N6CSt+cX6RuqKNzOzsoBECw+uf7/E3iQOjmmSlS0XLySpV637iBDl93D8mot7xQhOWApyRprmMpHcDn7AJ9z6JsePhfDdcUR+BT0BEbknHKohyoPAmDAcY7mhEFgec5+AYvij26UbWDzwz2NOadP/E4nBrtKFVpB1iA9xx4U9Kj6akqreiCoIP4M5W2reOllTwUzDOGIvG2C5meaa82joV5mXtbJyQhID21rSP479AESgHcgDcc9597drcQDyk0WvYoj1IwknCCspdPnfQv6eHjPq+rqmkbVQPXaV193Vv9JwJAEPzTTz+dXvjc5xLvlM3Pq15dDid79ZZl6Yo59/RNzq+/4UBgFZthuv++nYEFmYVH/80fZvzEWEXIRYHOIQniTqTkmqdRR2+U5ucRaNWl6VmXOuAEgsmfuN8stwd2wrif64QTwBfhmc7uIkoAlFJSQs2HPfShDaaEBJ1xN+o+6PY4KPJV8SjqIk9MkYP+/h4E8vTCAttV0kG1Pdeso4kbdgYzNn18FTXN02zSNNmxij6x7yDNI1PPzGi0It2iXjFMNfD0g4tNcqGmd0Jg8kLNi3u7aRVKg9FsBRNhOPuTYB3z6MaOSAqKoSQYKBmzvBkGswPvUwRwTeG5e8ECG+BEXtSaoyHU5zoAKCDTW0DTIlwA3CmlYm0Q8FLzKWR3GfZvpLs9r7CK5xMoEXKk3ZG0iPuQGHTnKIKc0P3nP6tPGExrNFbiBS5NGs7pwWytSRr67pLTLruy1ah7xfysEY2EzCtf92bvmABw9tln0yUXX0w8gidwB5DgKbFENlRrtlRtccd1WxIH32yEYvTgnkUqFvK0pDdL9+yZodt+PeaPVJsCi54VIxJsEFhgy5mUzOhBBxAv3piYcoNMD0se9fWBFVD7i+Ne0BcQzfLcAN4wEuVq2oAQRCmoAgg8exK273UTEfoRLN8AKHdZLEIJBD4OB8DZtwXBXz47FwzQCL1EQ28bodkbDlOr0O5hi69Goxd12tmxnN5/eIyeM6DTmWYZ77cA0HaXbVFtj+Tx6KDQEqjo9dDPkFUbITA3RCLB+kcuM5z1ytE9f8XgRyiEAAC8e2gLpayA1K06bFMF+m2+SE08dlOvQL1ChVxmIQS3icyvuW2xx6M5PCuIGeZO4LUrwRtbUDDWkOlsjw2wa2A3wAGaBwDu2wshaUn+1guH6KQVCWEeNnlsoUk9SQ3l0KexZnhf7uQrT+cN8aqtlpGQbPOlr3mT+0QAoKMAEC6+8EJ69Wte43/hU5/gDa9VTY2FfCie8PTPv7g0VriwZqu081CBGlDJmWiIHpws+wd+O0YrwpbAo18D3RK8vkyrzzwDSl+huTwEHihW1Vxag8DPzrjU2QUbiOxnPSDDGkbCbjADuMGLPuDT445FWdWmBEAyq8Xo9N/OkYYG3wR6zmgqAKAASCKdAhrvWCgEwVehpAfePEAzn56gxh40bK4dXPAYHRpZTu8cG6dr16q01S8iyMiuDgrm+YlGe/0er+7kfv0QhJiBbNTwWR+YStK50BsespqDnwAAqwgy/3YAWz7WCVU8x1u+1GwesdSCdYYTYI1xHPshMF/cH6N/EmcDKhdRIp3uYPZaYEWbtXaPoYNrmMRn5jJt2xcKt7uIg3kdjBMeD3DbU8vZEt5zgKjjtCH//C05wXIV2jdrUC6uUFwVaaJk1cVN/7xRD0XKCKBh5MfNl772rc4xaYBt27bRRc96Fr3qmmv8mz/5McG2m2j3SEjRQuIK4/bbU5H6JpOi9Mf7J3h0kBIoB798cNZf3D5GyxOe0AEEDw9KwJ5M6XWno6GkYAqXE0y9gtpPtrd401D3bV7GhYbT0n4wzKsnIGh44v04AOBBC/CGjSiEH54J0WdGYTlRo9cnEoED4IC/EADMAQD8zSQ03PL39NDCV2do8Q4Kpn3x/kos/OaSK+k98wv0jDUyggGJnT86u403+OHuWtRVjUfn+trbwChwCzLYg7eH3Sn20jcQmBcMAVigeRacGnQB9yHUUfMjSM08As1isQGWqIIZQrxtHW4P1Rt0gPsNcL3fGqwFE1+cRHusgUWeYwZbJJCQFqjmSLR/j0PLUb7quD5en8izmrh/gAu70B4tR2JRMC19CkxQ7h72L3jGEkFDG99/uIZkFKkjItFkvknS5itPjHcNHGqBAYpju4yXXfv2vwbAI9DwCFR86dMfF6cKFbCKr8MShM6O37NDU6ysr3fQ9nv2A+1oLHzx2+6d8ZUdR2hZFwUM0N/Hy5Yliq88GXZLCZZY8dXzhA454QeDQMH4Ak8Db3hBDXeboHvUR6fkkHCkRaGiSQJsIQ/Lnnk/HEPLpC5do2HebBL0+jwUyy6ocK3NorT0Y6so/4NJqv66HmzioyB4MrKoFBuiHyFbt6PlvvCcKqXLNvkWilvICyZbqGiwUFMmY86EK2hTdGQMjV9rZ18NQPgoLaMTM2lagBJTxbb443LA274bvJkjWIDZKc/9FPg3C0sVt3O4vw8gnQNjvHdYpzMyi/DpQtDKzZofTF/XemEpOyAuszLVoX3qc0iIznZnEBdtu9oGg390YgKDZg4ARTWkUbnXv+DZq4W0rtDOsXqw9+JIJkzz5Rbl+y58gRjr/o1lWTxj2HzFNddZTwSARwwDf/mzH5fqjqRHNE23mtXsqeFfPhTNxtTFapTuuuvBYFYK4kI//P2Yr+ycEU6DzRlCTdXCEqhXpK7jt0Ada+Qi+NG0R5WJ9ixeDQ6Ad11SIzYC75LLcwHQMD7DnPfA2d0kHQHhPf1GUTDP/tV0IPayANswrNjFCOZSZB0nBzNB9yt6gw2bZ2+aCvr1jVa70QwxRt/L5Wgn1NbGpTJdtw2fdVeBRAirMtfprEhmwaO0I5AIUFi4X6w4lEZ2waUG4ot1xO/9ftqDtO1nYczeH1zMW9Ey1Zuo/cxI7BQWEHi2lewmAiGIwB8GAzAQLuwJ0Rv7iqRmJdB9e+KKgy/opvGZuD9riJQe0FDyWhQdFMkpt4elOeuZydjFmEUchfaYAZeB+4sZ/+wXbhF6YirtOVIH0zaJxwh4D+SDyvHXRvo33doyDdNulIxXvOYNAQA+99nPCi+/8spHnRDyCAB87eZPSpP5GjNAKKY4y84b2rldS0ZodpLoj3/aQ0t6EjSbr9Iv7xz3umdnxWFYne6sQD3LRDScQNGhTciyMNVL7aXd5WJ76RfzWbbHo9wI/66CG4yEcI8YD/L4Ew2SjxgUriFTWx7dPKvSjfuQuaDaNETfS9Hom3mDJ2pPuc6sg+188RKafsuhYByep2zzkyxC9y1dRT+FbD4Cj37VGTJdECoGy37cHMoSrlMIc0rJFCmB0qfAOCmegQPFwGPy/PtAAHL1sE33md30/YZIzxkepAWUAc7+IoJr8/59vOc/7udNKwCkdXT3cxMHl4HJpgFN26LuaJhuWVqgWI8IMhWC5w0dMi0nkgUW+tlPeSW0R5t5AokOF5XCtcFhQWHyLnEBAzhgDZctIJIujzLwQD7pr37accJSKMeDE3VYxQYNprRgW7wHGwMf0vqOf6+sabbsNo2XvOK15jGJwL/8+8YXb5IdJa4LgqBTeXbDUv83v+xf3kdTkxbt3j1Ky/tTVEaQvv/9P9KZyTxlgdIUBKCeBAOA2kO5VaSiJlhNkBmUP/cFyAme9gTBdNgK+rCbBYcaFY8Wi7yNGjy95lC/ZVJK5wEjjy7fqdMfeNo3hN9loNwzQKnS0euTUfeX3riRxv5tR2D3eAw+DrtloXF2x3voTg0uAee4p1Smq0/RaVO9ClpHdnWClaA7jFp7M8dI1SdxkYKtZz2Ooon7vITdaGuJqUqavjhu0aV9PVTha3bsoBeQKbqF+/wTJXxrcG8kPo+3mG3ifhkAWAQwJiDlm9BAP90qU0eXEyysraMMVgSPIkNi4Pd5PuP99xNtBQDCsKxqLNh/kPScHNCADzrwDAAHr+OyOD5OdLAcpqXbTqJlnTEanzWRjIs0mAkFzuSBSu5mL73+LUgsJ5vQjZdf8wYemaZbvvhF4Yr2vkJPDIBv3fIpJdm9BOVN0t2F/acMynd8X4evHUVGjk9N0xDqTRkIve0nD/knxooCNAj1oI5rGYnUODJMHSItm6P6lEMtUFr3Bt6yjYIf0LCbNqkJgeyCSbVJM9jEySj7lIbq16fgu3nJF6D8rJ0hOlKp0Tnw1y8F7asPXznaZdk7+6nww0kq/4mC/feY9kNZnpWbou9nUqBVM3jtFLKwgqDxwFEM9MzdrN3hdic7jydwvzw3Nk8a5T+Nfz5Oav/AJM+6kUUZtG/T8Yl4kNU8Rb7Bt3h/Hbe9oRBVLJsWIApLPHxM7V8+Kdq4b9qUx+MLuJabtup0+pIW2SmBKighFkS0EvNJSkTIR5mQwhrcRwvgA1OCFVyjvRUNz02TdJ7UKgYoNwHWhRlk+aTm9597GspbSjhyuAkQlGioIxToop3V1De7N1/yatfl2SxN4wVXXBUA4Mtf+IJw+Utfemz7A3zzS59UQul+XVNUzV7Yde4Jwwe/YoNnP/6Fh6hWr9ALTxug+VqLbv/hQ96WaFHshgDsXi0EI1w89q7GMqTE+wI2sEHp4awbgM6uWxRbkgBNs7S1yauDTvMQdIz4BRaBTagkWEJXoI2/Nakbjfke7o/22xs88lLsked1kDLo0swHi4EIZJ8sc0xB3T/KDFAJ52JaLlt28O1YtScQ/DjouhfBD4lSICYTqOuS0O7d480p2eOHcbIqwJbkDi8Iv0wsirptAHQyVXDO4Icd4F6ko79Eyr9LUMZjJq6vgtsuTYPPd2geQWdryBqAO4Y+fWqKTttcJzsDptB0qsMLJpeFUAblQPsYFaTrYo00lCi3xfsVBKNQ5NSD3ytEQiFhUAYc7reAMzmwqPrpM06j9QyA0Qbd+ttDYAONtixJ0u5S5MeRpdv+ybZhEkXLuOZN17cBcPPNwuUve9mxMcA3v/gJpWfpBi4BWmP83gvX9+65+Wu3TdKnv7mfzjv/fDo+doRCQpMeum+Xt0bOi9wJlOCdEsT21hhqKk5653LoATOYUq2GHASdv4BNybVJMhbKKBGRYHGn1DDJO1Sj8CJKBajZNaG2I0la850Zei1AvAFZ9/DevfERor7rEvTQqyrBfnysH3hSJvvk0Vwn3cteHe9h2uWMTKpKMGegD6BMI+Bxuf2TbnEEijt0+Lf9WvxzsH57BzCejRzFa/mxJPf14xwWAso/clGG0IuH9IDGSwwaznTOXu4i9tqOJuiOxXPMDg3uE0DwSwjwKzcq9OLjW6StU4MdywyUxtjKLJkz1QBID/68RUuRQCGUNpl3JFdRXNBeno3zWnxuIVj7wMPIDbDAXXtVv2vbybR5VVb4/Pcn6acPLMLCX0Cbtd1kq+nburdc/uJwNOLlZw4bz770pa0nrQFu/dJnFD2e05vNliYuHrjw6evmb75v1yLdOz9My0f6KXT4h+QDlXf/Zoe3WpoXVyxBgHDxCi7eWHTxRTQKD60HZaGBNAQetO+aLsUG9cDkWgsVCkHAmNMFUsEQAsSfjvQWzPbPsBjRNL3p1ml6DhqRrz5D7Zkzq94/TJO3HCF3d3vwhNWXx9sEILP/MDxEBQRsGhlrctDACCEEfAPoO4kSwD6eN57gJejcncv2TTvaw8ftYdpOwAT8KykMjgiAEGzWjNfzL5Zyh0/dYvqHq+ExAVEKNACXGwbZLI9f4HVcHpgVmIG4/CwYFj1/k0evOhXnPL2LGhNVcmDyeVYQ283R7S1qTFs0vIKCseIgOrgkJS6iHCjkwZ14KJ28utiYxzVAz94/BgY462Tasq5TuOPeGs1HjqN1IxlKz91GY434L/pOfMmlsiR4jeK0cf5RAHzjlluEF15xxbGVgK99/mNKEY7MMAwtZs6ef8HGyi0+FOx9u2o0dmScTl6Tgx9t0h9+u9M7MZMXR5ZDGKFuxYck0DyvuAGdDixB4DV8Cfa0CErJQnOJFOnTySpWiaVUCGpXWjBI2tckhbO/ycoXDOCL9LufNQK/zosteS/ega3493qBxj7nB2zA3yqstwdT/ojgH+A9w3y2eXaQjSmlnf3HwceL3I17dChXPPqlGQSc5RxsLgM8AspPcNcv/7hF8BO1eA/vi5CKRIJhX858HawiiVLgAgoB2AAI3jWVhSAOLgVeUBIcmsHzDIRnLnfpDc8SSFsfpfKBVtCp0znE09glGrsXnyfz4Qe2j2s/ryoK9wiBPuHVTXxhTsMPRO4CbODOBc3vPmsrnbSpV5gbb9CuyRr1RB3qiGt075z6k1r8+CsUWfJSOhlXvfkdAQC+DhH4ov9vc8nHB8CtN39CmV5s6aA5LSuUTj9zZPI/eYHI3n01mpmbp+U80FM26a7tO72N2qy49jgl8CtyGDYwz5MulGBCpiClEHg7WO/HpcAznGB5llnlQSHuqAVg7i1RpGCTGAgf2J06KG+ZS9/7qk8JDjKOHN4zch2C/y4emGlnPy/Y4Pn7E4kEHerpphrTLjKfu2H5j+vxhmQi+J0+HuEMKcqfaz7vqlUPfkyq3QCc7ZzpNTzWnUwGoGiA3nlgjLU+B7fEo4c4F09XZ5bgvoDq0WBzxrfnUQCAEIA8RX4B72fByCXgeauS9KIV8xQOJm7IVJp1qXtthNyaSdU5L5jgGe8G+BZ4HLc9XUxJUuCquK0EBUCowHEU+beNIAJnNb/r3NNpw3BKyM9ZdHB8nkY6I7heiR4oRr8TXnre1Zoiu15z0bj0la9v0eP8PSoAvvK5jyv7x+f1aDSqJfz6pmcMHf4F16pDYw0Evkz93OtUqNPv79xP66Q52ny8SBoUrp5RqTVj4OLRcKZI4d4hoNb8v+19B7gkZZnuV9XVOffJOU8OwAxDFiSjoCDcxXS9u/sYAFEcF8QAirprWgUlYyApKure1RVcs4LDMIQZmDwnnzMnds6pqrvqfu//9+x6n90VkCC7WvOcZ/qcTlX1pffLkgGYYkDbsG+VlM7czradbaH+eJECqAv0KkKlIhJTO4vt3FU1UVkL8Df4BrZ9DH7ST8jkCTRCDcUW7Cj/a38vtbCEHmI/HfYfktnOQKvf6xZROdhsmeJVyM//g4ghLxZkFsQyKYBlF/+OGQUhZiZMOkcBKCo0NcT5saSCpR+mgm8qlZkRDDYv0AYwBUJL8HekmNAwASA4XML5hv0Hk5zTF6Ktm2Jk70HFr0KhCIJm8ALsVI2jAwqfLfMTyGGgStndyozJWkBnDwl5MvQL5GMyHLxouqn3vFNoVW+EEjGTxqcOU0/YyRjFSc8Wu+5RWjd9qKbrdbeiV/5m64dfOAPc99VbtGzFcnq9XpdWSa86KfjkNkfAR7PTeZqaj9NIb5BSiRz9628mrRMDh5V+5Lw72c3CuNWgg6qMWD1dHvavw1RcYoTtZjli+1lO10WHkJO5u8YX6Uqy+p9iLwGdQujjK/PpXMpXyy7ntitLggGQJRt5D9HMF+S4dkg/QDJ2AuxraSa9o01E32aZcFDzCM6g5Wsk6KfP7D9Ex3Q3Uweja7OMJY+K8KVRuIl4O3ZNq05sLbWJbWF2DUaKpRwjaOqqGCHv5BeipwFgD7vOyggYKTJkW+L3VGqm8DRsNvZysBYHyyLKTFDNEhFOG2YN2G202b1A3SeJMcuiIhkVSiAq1H49JxNBqMOFSWNlK8LjyFOUlqWbi6RQOSMbUPdkg9ba1x2rrBpso7nZstDKw6wBSsUyHXYdfUvnurM/xcxq5NPL1Qve8tdC1d17++3KXzdG+z0nA3zrG3dodc3j5Gt0KUap/XjXo8+aVl0rVlTaMxalvlYney8mPfTouLXBnFbWrrORmyUbyR2AssxhVtvrHFSr+dn++kT6V9FMqpXrwi9Dv7+eqpEnXSPnLJuFisn2nzXCMaziN7rYH1bp4CcKFGWf96gLiBKHiArjcklDTWI/WmJCj48Mkd4AYhW4TfzZcPcA/KD6vzpzmP52yEEnrIpSnG9kE6sTO24+EipzsqtH87NbxWrVBYbgWxVmycvHpdcBTTPNEtlblalaMF+GTyDiBOCVEUmUeWO+UJClusCXN8evT9dl79/xG2HrJeMeSvA96ZYdQbjrAIGQdjt/v8XfX2bpTi3LdnGYOd8AchoKlWKW6DxGRLDOr5teIBqnJuu4C05Q+rtaaHwsTYsLi+wG+ijLHtVBa+21wZ6j7qlVq2isrFx27fVV+gPHfw4C7/maOrR6PXsBJZdRLnu7lu7f6/FSMMME2zebpK4mhwBRDz8+a0VmD9CWo0jBsIVAl00Ma2QjSFrIR6mDJWoaaKEyqy1XMyJZdREd1JymyAPYUTAyURM3VxQj/m+2xZmymIJ5+AcVKk4QdW0hYqdD4AGwstX4f7Kni7IBvygOwVWkGGwh07eWJd+rKMJr+A5LxgkBk87yJCjBGifM7kSQCRDgW2Jg8AP/aACSwCWY1sF/X2JXy1WXLV1+xl8zYIB6IzXLFM8UZbWOj7Weg08qzoxU1GXFD5gJQ0oPLfH3eDF8gqhvI4k5BNPMzO3dshPY2egIQrMp0sGYPwQff3GPTAWDYZysASLDUgPAUakXJbMtM2MtBHqsk85aq3R3dNKBQ3HKJKLUFfJQLF2ghdBpb3dHen/OHo6eSS6Xt17/qedMBv2H4zv336NqDruzZtlYA9S03tTDv22L1NbkczodilbFxC7WmvTL3cuWY/ygcvSwyWpWDkf2HBWgwq4CVWAGmhi96l5ysKi5Wy2243UqM6hx+zDlwyQv5gVM1chigOO6mDWGs0yWTWNfmIk8RpR9qkZZ1ibVWZn8sTeIv8T+eJSl3802eYHV3kShKEq4PIzOUS/Yzui+oldpezbPr6/RVu8MxTDemz+3jYliTsm4Os4XqjfJN7WZQViBpbCIZBDWxfAX+ZlSWk8TeUAkt0Vp1OwZMqUc6pbSOzfPah8jBxitWj5Z348Gz4myRRG2FS38fSpLQCZbFVXGMGn9A7In0NMiQycoHkWKcIwxjoJUIV9s5wr+Tr9sXinnpeqr83v2siZMdw5ZZ71+vRLwRGj3/jm+liJrJZWml7NkrPirU52+5oMuTauUstHqu66+7oUzwIMP3M+IrOasKU5XvVyxRZK//vb69vLZpapFe1E+Y5RYC3hp21jGyu1/lkbCVaUZ41baMRRRoUA38tlsC+ctMQTS1R4StU4mq3o9b4pqHsT7naPMSIsmBY/xknomP1/QSWVPwmQbqs/pVD7AN/InjZUsDfsPfba/j9EUq3lU5MSqMvCCQE8XM0YIRaJA/sxIi9UK3Xd4ge4f1EnR81Swy65ba57vJxM9xz8o2YJdRkQxuiyLMc26nAa2O9BOP2T738efi4aRAmsZRB/NRjIIbmdeRActkeTB+emYK4ToHrqhUU3LFP7GGU7yMRWfmSEa7pTNoh6fLP+CAgvw3zT+/tFHWUux5qg7ZPcxGASqp5QWfShC+xxkgXBvWW+dcfqQ4vI201O7JsnBF+NHg060WDVXvXWjpjkSfo9HL+eilXddfb3xghnguw98UwkFvI6a4nBV8wVHfWHb9VuCs+/DEsZn59jelovUy07maLREu7fvs9YFcsoQE7+9TxFbmDABA0MSczHUt7Nfb3ewNnBTIYElDiz5XpNCTQymdhpkS7A/vrWXpbNGRnSeiV8j1c9u2vYKLf2cJTIhpd/XONmdjNjT/T0iJ+9Hb38mK/xvRPuamPiI9Yf4sexJ1On2w3N0EaPtDQwonMw303xORkL27WOKNzpw0OkLUAqAVTFkfgHg7N6WATpt5TC18efkiyUZ6AThsQeRiTvXcDnhfiLymEAIGgzB5wNQCrO0qdNH7+lLCs7NYksZmkhhBjxSslGw2tYtK4WBA2IxWSaOglE/m6xcXI6PQaVwirXYVF61+k7bRKe8Zkip6m56YscBamIPysY+6P6oNTNw9vuO42uv6YVCtVxKVy770PX1F8wAOO77+l2OQrXm9DnYKuWmzz/BtetujeHpoVidovEk9UU8tJQu02M7J60RM6ZgOjYKRXAzo3GprqtCzSqi583udQv/2cboOMmuTwebBNfTNWo9vpVsp2Dvi1O06yARZJZUSt5bouU9EvThJGHT0VW1j90+hVV8mM8FGgA3HYUX61n1+/iLunw+ARItzB9gTtzNDPLPyzH6CCOoWqFErWv4PBPyQzFgrL1NPtYRZi3JRk3Y3ERTC93NRP7UicfR8uIiawi7CP+m2b2DZLvY/ET5MXoHEBsAFgHhEYlcZFcRIeFl/v+TW7y00plBkxIdZuKuGCFqZckuMJirueQQCf4qMTUEqBLaZ4Hv3+r10htAnyBC3oh5oFF0rOi2TnzjMcoxJ6ykGJvjvc+MUhPf4zJ7WZPVln9tWn/BO9LJBDLLVZfLXrn8Q9eZfxQDPMCuYMXmwbQTt13R+/uj33uio8WvPHIoQ9/6zTSduTYk0sI/e3rOCkxMK2tYlfZ0yEHJUG1oeID0CreHCe8Nq/Tz3zooEmC1yO6ixeZgXUahdZ9mzmGNUM/m2C1iAOjwUOGxEsW28ftnpc13SxNIe5jw8e5OasPYGgXZvrJYGYeUbC9LfhMTycnEibAb6eUzhxbQ+G/fPDxPe+IpuoJNguor0gbM+2WhnC3JPvwOv5zSBTAHEOeNuOguLURv3bCW2tgWyFWxiiAwfqD+j2QGBVOjPtAwROYP/j/qAuGZYOPJLWdn6cBuQwjExLIcE4tZg3pJBo4wIibcIpNW0cMywFViLRRulnWCyHOkcnLaaNLABLFm6w3nr1X6Vw/Qb3cu0sFDs3R8v49yfPKpyPGfG9x0zo0s+noutoAZ19UrrvkPZeHPjwHu/+qtqjPY4srE465SsegczP306cGIrfMjP5imZSNMJ514AvUWtlE8p1v2uUM05K8r7JIT6jzQgdPaq1B22RLoHmeQKSn0u6dVev25dtEIER/V6bSjeqjt7WFG/lMs9XwzHRq7RAZlf1UWyN9lyVm8qPXAds9/borQZkZxID6yeYt8oyF5IX4fSsYimA7G5gYdyWjbcrLrggCOg19738wM7WKqnxuw02sqKdL4hhkY1gS/GxO7ROWcjSb5zu9kQPkavpiTuzrY/qapVK4SitlEIQjJUjRoH2gEkfhBAIpkjcAeZuQ5Vv+LzADv6GyiMwaWqZSR3UCQ7MFhOUR6aaEB/vinu6PRCVSTSB/1DagMHhxib2dS4EMxjn6K75t/84B10dlDyqQeoI9/4xk67vjjaZ25W6yQ0fvOvHBg1abHWyORSjEdr/7Vu6/4gy7gH2SAe++6DdfnsEzNVaroNtfyr+9ZE8hccMPPy3TOG99M1XySwrP/RBldpb3bpq21nqIyMiyHImChDlRZOScGfIkqXXTBhvm5RNwmVJu5WKeT3rmZnMM+lv4Jtv0M1FwszfuilH6YbfVu6YsDvEOlP6DZaCkcFj4+wB5KsUB8hGlRmtXpdsscP/8eYskDyETCJtTTLXr7IMX7U2n6ycwsJfkON/HnAbLYzRIDQwasjgBrBJ26GUy9bctmsrPu9SANz8S3+PNzrM5RFVzDqnfWKnFgApsqiI9sIcbQ7clmaZzfhxxAC2upU0o5WtVaFwOjsfsFF4K2b5jEDN8PQAhUvyOnARDIlkpMFkFRaiszwIqVkgEq2C/AwjAZVa0156+h1540qEzl3XTHL1J07usuIOPAjym1OF2yVr5hY7WsZxyqWmlv8lav+sRnjT+aAXDcdtMXGAH4XWznXEp24m0j5e03WnYn7asO0ugz2+noTk1Ewx7duWS1p+LKym6JqjEjL5+Trg5MAUKcADHJlETXQT+bBKudTv/Uejb7S2QW51n929hzcFDqR4uUYHdoeV4GWpAMghm4gW077O4Kv49W8WOEjVF9g4wfCjMwRdTPj718JzHVI8x32uH3kwuTQVg7wBwg917N5ymWSNBolZF6Ic9Sawgt1dPZQcPoOeD3lZlRnBjRUceU8byQ9Gg6K8J/BoY3MYGR7kViCF4AkBwKQw/mCzTHJgCJoLe12KmczNBAqwR4zfxxDEFEyNdsrLTFY5QtZJZEhZoYLt3SKV1VdBfrcCmRAOJ7VxObR7zWuRcOKptP3UAzh4v0s2cztKrNQ0ZmlmZK/t91b7n0onK5ZNXL5YrbpVbff92n6i+KAe6+/cv2jr4RZ2J52ZWKzff2Jx9+sjPisR1OlJgb2fdmQOdzqbRtNGvpe+Zp3YCltEVkiBNJC0Teig1toDVm42EuHmrdtpy3no46v59qiaf4D4zaK3mqMbjMP0I0/pB090B42E5vi0pPDjfTvXsKtJKJjzrBHia6hhp9oGiWNlT9tDGhDWTs+O7aXQ7BUBgQ4cSMIBSC4M4iPxCP83PMKHpV2PAaujAwEAO3Q1VEG3iVVXkdbeHMyTBhiXxRuILI/SP27xBLnzDvmMFgpSxUP2oQgfxPi/hopREVzSZDQ/JeovoIKQYIRK4gzSKKk0juqBTMMTbBjNgmS8K7u2S4efqwHBsHLWCtabXeeHq3MrB5HT35+CgdnlwgHyaJI5Pad8oNAxtPu900dKOcS1bZ0a5+4Lob/iAAfE4GuOe2m9Sy4nQ5TNNlYZPRvm/9YlVY34hJVRPxqghct/gdYhz8s48tWCvdZYU1rgh2gOi4WLYU9Cz7861huTgBqm6J/3b1F99EoRW4DQwA0wcYA2TJSFZo4YYczeQk6j+yyTu0yU5LlkG/LDTTvphBQ6zi4fdjq0Zng/hNcP1YGkN8VxXRvaORr7VVDI1AlwuGQ6FMDZNI7BGsd2cEHwoKJjGZgJWlRXYFS+QIh6jMqF8Un7L9t5iT85kMZdgUICNqNRJMYBQUjMD272VPA94GPID1Ljf9n1qSZoqYS8gSvUruJy5lpZ3H6BdsF0NKGGMMsF+IFYfQkCj9FmFiNhe+iASA8Kgm2TQsK6p17Dl9dN7pI0qW3b+DozOk8Hlj9vHEYsFqOfmvT/EEmsf1Uqmi1kuVrTd8Vn8u4j8nA9x3522K2+VwqprbxX6wvTz3xAd6i09/1MWga4ohaY59pjafjRIli7bvTVnGgbjSiRaxbnQJSamPL/LJM8Fbm2H/WX3mSXTzfuDhy5kYCP7MUi21jyyjytK/RNEHWQPk5InB/w82Oak+UCUHS0Ys4aCHU600nshTmMEeKn6GWcJH2Cx4Ua8PwMcEamE1bmf1b0ID8HPO5iZxqZrPTxpmBcFmgwGYETBISsUcoEJBSLzBKKy8tER21jCl5WUxZkZHZg8hQ9QUiOyfKQpD5vj1OabSbpZ+uH3IQr5Jkw776pAM984gJsI/3sYkcnHTmcCVogxu+eD/Y0ZRULqiiAsgIYQaSpTeY0bhBDNAvs1rXfz6PmXDiStoZipNzz47wcJnFyN2l+vB/UdfdPXpiVisvry0VGkNuasfvOGzteci/nMyAI77b/2iZneH3cVKxVXIxPpDU997vCPsskVzOi2kK2JooZ99v8fHM9ahHQs0ohkKNBuqhHJpeTF+ln6UvyGEOslwvru1j/72u29jovMNTz5LVmGOpTBFud9laPReORQBugFhlu5OBy05dJEMWGBGGhh00/dmm+gg2+QWJty6oJ9GmAkAAKEJ0DnsBzMwAT1tbYILoQVsrHow/UMLBknl19n5MbQAxr5gNIyeSrFJ0FkTLJGLubUwOS00Q41NAHADavxwR6NMdDBBgbVAkjXAAX4Oqr/J4aLz1Byt1yvsYcjMHiaFAumjyXkXtAATM+CVLicaRHH3e9vkHoLOoOwFwHNgCEwnh92fjMs194EtHdbrT2pX2lb00c6dsxRfiInZjPG8QfWek/9h6JizvoIMIHNrNZaIVa/62HOr/+fFAPfedqNN1bzOYqnkYrdKTe2470dDntyJhXKNlopY5WZSX5uPMUGJduyOWYuTWWUDc//ZRzOK51MYm2G71ipn7SOggXGohbxKn/nd+5jbg1RL76da7HGRGUl88zDtfUiubXeSlJCWo/2ELaVFp2yMEKHTkJv+ZSFA+zJlUe61gZnghJYWVrFoazcFMwSYKcAAIDriELD5KFJxsA6G3cckMCebCIyDESNamBH0WFxoADAIcEKFXReLmQBTQdLoByDpks2xtsjz90yx9gDx3TYHnWrLUT5bZiYQQ88Ekkd4GYEUdPvuZ2YoeaQmREIoEZMNoIMDRMCXQLyIC2DRFCKBiVQj9sFgOO93Wiee3kannbVOKRVN2rHjEPkZ4yCrOh0rGivOv/o4zemdz6XTVb2crVz76c8/L/X/vBjgvjtuUYqVsqOnq9/lcLuds3sfvdA58dBdbQx05hJFWuaL7ggA2iq0fSZnzT8ZpU6HqZywWma4EMnC1Gw22zQ9LzdsovTv0q1vpPYzN7AJYOkvsD2zuejw1T+lib3S9QPx/R4nGd1VoUWQgkDGrSvU2MPDCDkW6KRfxQ3q5pvRzRLfw+6hm3Vop4/9/2qFQWiYbP6AAIKu9naye9mTwDIfMADbdpvHKyaBYQiUkU4RBmPXKiUqzS+QzkYaJdsVZr4UI9cyhkBUdXZh7TTGRnuaUVuKmegMr5OsxAL5e4iO5mtsi0rpRoYTthy5BcwEmETzp1fGA9iTFetjFueYwdvEKCORUEJyCplCuILJnGSCX7PWW3lsm3Xp2f1Kz9Fr6Ynf7KLoYooififlKybN6sFf9h73V29hj8SsWVbFKmf0D1z/989L/T8vBhBa4Ctf0LoHV7vSuZwrkYi7izu+/mRPoN6OGT8L2GrK6jDCxixRMuh3u1Nmei6vXtAlvQFk1dDoApdQTNGU9ZQ0sMJHb7/9Kla7WeEG1nNjlLzvAO37EatZkqVggQ624+15UorSIwh1iT4TkciBm4nCjLIVpJ8YPrENFEwwyJwGE2ATbqEm6v6cDBDdLPk2fuwdGGBAGBS2Hyof0o4KIIttuh5PkN4YEFVOJsR20TzCvGj0YI8BIWD4+TOsEVa4PfQWR4asZbb/2DXIJ41Vh8fbZc8/ev8R7xDTwPhcU4yJciFJ3GxaekdtzTL9C/cYrqjHKVPEsP9ZFp5DzCD7Nbv1xtd109kXn6ykolna9uhecrNLgdmDC6kydZ76zktdoa7fRrFsuloot4TD+vs+fP1Luz7+3ltvUqp63cXY2lk3LXt96Zm/a808da0TQxGYCzMVi7ojLmYEkx6fzFoHHwMWqKOKjPojMieAm4HpasABGJLstKt07Q/fR24fagUZbdfLNP+h79OTT0sPAA6sp99HtrYCmSxRFn+GyZLT7JdhVGiALEuHm5nJxUK9qLbTeDUouopdqAFE6ReDTZiIIH+5E/0BzAROn09oAAyHwgZUHPAe8PfswgIZhs5aSmNfn8+H/TVIPII9Ub4IdP1GGOWfZORpZTEqUP0in0ueP3IKwx/54/5XUDI5VDkaVeHnw/2r8eN5AMOINGMYFAGQ29kjNUAhI8fDgfiINSyxiRjLkhU4ponecuFapf/YDbR/+x7av2eKIl4HeyV1Wta9h1afd8XpoUDQaOvsLO9+erv+/muvf87gzwtmABx3fumz9khTh0tzOp3ZTLIp++gtT/aE1UCZv24mXaMkX/1Is539ZZ0e3Z2ycrMFpYevcB3b/8Fe6RHkktIewiwgzt1/1Ho647qLqZ4dF0p/6m++Q89MyxgAGMDbYafQsCGGLtv4PWVs5eabFA7K1W0A1YjfY1gzg2Fic08po4XSVhMTDB02JeqDBkApOhPZxzrWg3Qxq33gEay/RQWwKgY/1EUBKOr5UB+I70eSB91F8F3bWEOsMQq0orbMAE+GuGG70f22zJLsZ8IG+aUdNcmUlpxuQwwXqBGUpCk2AbUm6fOjkRW1AuDHZIMBEBXEwGlEDfdgGITLYZ1xbqdy2iVn0MJsjH75i2eoy8PMzTZwOW+SOnTmle7mwe8blYre39dTTSWj1Suvvf55gb8XzAD33vIl1TQVl8MXdKbTGa04s/0jrZldWwNuhe5+qkTjpQAN9XbScZ4plvCateOpBEUKutLGVOrlm7NhJat2lD2lZTQQN7Cvk+iEK15DPcceJ+7Y7Pu/ROM7+MY2GKBl2Ecpf0EMVGrXGieii4CeyNqNMGOVME/PIydrwY5i2CJyBRHGJYmlNpp3KWTDBAmmRNQwyY3NZESifhBgsIplFGIhZk3k91HHH2C1hC1JYXZjmpgq7Zko+RRd9iA20DrOgSGBMGsYFl1m89TD/7tZbWcxo4AJ6rUk3qmw9Kf4fYWAfC+WSWIvQG+7HBELcLt8WIJAzBEq8Gc/y9LfcXSYLn7dCuWphJu++ZMp6h8cpmPUA2xuHRSr+cc3XXT1aYlkQk8mEpWWiE9/37XXP2/w94IZAMc9X/6Co273Ot0ej1OxapHDP/7sDlu1HP7+rItOPvsiWrd+HU1872N8Q+30zFzJyjybpNUtltLhlXPx0eEK1QjpwM1GtFVz+WnLhz9A3SvbKfW9j9PuTyQFBoAX4F7TziZgmSIsNQqiYUm5fg3lW6jnyzNjdK5hItjkZI1UY8wacg515B7cXirrTqpty5F9pE75PgdV/Z0URS9+SaW6P0ghVqUK2+iilacg3C2su0umxVALvTG8sd6QZhANarreKBhBRBORTQC97/Fzr13BhGdpzvD1Bvh9K/h6l/k6xhHsMeTMog3DMrtnk20IYh5ghPFBlDUf9h4iE7ifwfJ8wGude2qTcsLFp9LdP5hkb6OTLn3zm+mnt11NEfYzA+svfE/Pqs0/7Gxr08emJ6v2eqV62dUfe0HS/4IZ4Gs3fk5tamoVo2PT2ZwW3f+ryzvyT31yzmgm38rTaHpynEbqo9TFeGD/fJ6e2Bmzeso5ZahVzsg3WfX5+SaMjMhIGCJksKPxvJ8uufEG8hSepL1bHxQz93HYHRq1ncs+ulIilVUpOqehkes2WRUcgkSFZD8/Rq6gEMUhAgis1mdYrc+WBfisDvL3DEvfHIOauw25xPkQS2n/stz7i0YgSDWGOFuNDjpUDlcapWNgAtQJqKo8N4R2l5gBW91SCzzCfws0S1XfFpIgDrbMy9fO2JKaoOr5O4c6SI6L16SL6PHIDiHgo5k5GRNYdNmtVSd00HGn9Slt/ZvoBw9uo6j3WOpvcdHSzocoZzieOfbCD5zn9/tF4KduFPQrP/TCpf8FMwCOB++6xZEuGk69XneWKxWnc/KHvxkMGiMq612MeYcdbXbbRKfNY6MJK38oTi2KroT5Qtla0Oik9IUxJ2dlj/SFIUHIjAXWn0x9C7M09as5cWKiGKTJS/3ngHBFykzKwkqAJMTZA01ysiZCzyVM3UT4dFmh0n6LdGTehpgAr+XvQFozILtrLDbaGBObYiZrZQJ5YpIx4LKJtgQ5/0nYaZgVqPlIUJ6fzy//hh2A0D72xoJotjKEbTYLKON2Sj++yIyEvIjqkJ8B9I96v7YmqQGwMgZVP5gojnmAczEZ958rKVbPKe3WGWd0q53D7ZRYJNr37AS/jt1VVkmHk1Wz46R3XFDX/E+zm6t73I5qdHGuevk1L1z6/ygGuOsf/0FV7C5nPJlxss1ytHiM032zD3074LApGHE1FWOpY/EYaPXRntE4TWdNq7J7ntb3mIraaHxA0UiuKCUAN36wjy9+Vt5cw9VK6xdylEtX6EhHg4s/2tProfaOMvl67ZTO1CjoYdVdVah4QBUDH5JM0DqDMhvf9LYBvjBEIpmYLUOKUL3QPlUkYVjt+BlgmQsyWJNMS0lHjB4l7eVGwgYQ3Wx40xjrDgCLMe54DgAScXxosEpWmjQkpfJY+RKWvj0yPEvL2ErGD/m6FjOyhR4mqt6YAYHlUPjemaicCDaL4NBAk/WGC/qVkS2rqRzL0jO75smOhhrsF8xUKOcZfHDkxEve5/W4TaNer6YWp6pXXPuJF4T8XxQD4Lj5Mzdo2N8ViEQcmt1pKxz88R1dtYmLvW6V5jMWewIV8jAThFk0kqUaPbY3Yzkmkspwm1yxjjH+UKG4SZAqoPp9+/gmxeSYtLVDXtJGGXRljf9vy+GR9DDoU2n8wJWC8Hr5M8IMxGKY2z8ot3egHgHTuo283NULtRxhLNFXkMEaqPMoq+eARy6MwLlA0hG0wnPI2uF/4AuYBRABTJrIyxFvC3y+I/z5OhNvAkNImJiWR8TECN6R2DjajLkDMsADhgf2mWGtFfHJOcJhNhc7D8gC1ajTa532hn5ly1lbRD3Drm37qJirsvlwsMkyaDpVj7dseetrXB5/SlhBxeKbVKm+54Mfft5+/0vCAHf+42cUm6I4mjp6WQtYzlQyFtbGHnik22u2uxkljS3lGTDVqC9sJw/7+wcWC/TI4wmzfDir9vGZ97VJwrU2SWbwMfGeeFyiYDFH1w217qT2io0qS1WWDpnWPtIZhJNG3QkGLGlNDNb4/Vq7dAmxnwdc4/XKTFoHS10W5d4V+cZWNhXhsnwNAjaITIIxYOex4BkehFuGCkRGM5qUrhp+hyrHCaBoFFgBQRt8j8KEXGaN9muAUriEQVncAfuOY+VKme1bXJKBHzEizi6HRiPoMc7a63DZaW16fT9tOWOtEgo30fSeSZqZnKeOcICKDFQnlnNW+Kg3vbO1f/1DdUM3lhKJatBu6u/+u48+76jfS8YAOO74/Cdtfn/EORdNOJ0ej91WiZ7al//Nd3ub/WquVKXxpQJLU4VGOjx8k220e6FIj/xqyaLFgrKxhUQfAaRAh2vFjw/ulaoUGTCMUkXEFsSLx+zUxL5ScaFCLkYFthBCoFW26RX2ICwRZgXARCMGUDtuNNL+yyzZy3EZjBGSz6p4mLmmP4k2dDl5MxKWFUsAZYjMiQ1efG0pjGqBT9/Y8o0DQA/BLFFXgtVu/L1Gq1wH72KiHwTcL8mZwKg0FlvU+HUok8sasl8Ak9TQ2SOGP1pyWwmCR5Npu3XUBUN03OnrlNaeLopPzNHeXaMMaOsip7GcqVLat+LbgaFTPuB2Os2m1tZqNZ/Qc7mC8a6rrv6jpf9FMQCOmz99nb2lox/7BByZXN7mzu/7+Erb2JUezRR77qAJwn4PNbnkiLUnJ4vWnu0xy18sqSsYDYeAhBEnYAyw/0ADpZclIkc2UUQDIUWmzJsjNg5VjYkgWLaIA4RERBDgTbSNsYSuZncMKUkEV/bul4EnSOy52P0LxF2QGARMA4kHcQHSsLxJlGsxQ2b5+fV1GcWDZsIyaKWx3gWEzfN79nnlcCr0+aG5BK4fNnxgvhA6fjB8EkwtYv/QTJpsOmF60mJaBnyiFc0aOWeQTjh9QGnvH6Ls4SV69qkx1nY1CjFHJisKzRUdExvP33qWy+UuToyNocNEZwbT3/Ufx8C+sgzAbiEKbRzxTNXp8/sddv5XO/T9Bzc2l0/2uDU6MJuixWSVbbydQaGHiozCn5rMWXufXrbKSxW1lW9IX0BWwUzOSBcq6JN5g95euVQB6hbpUZgFlFBDIlFTj4AMSqpmDksiIeGEdW0gIKQOuAKWA1VIqKhBKPg4eA4V6dqhCAMp6oqs6BKdPTG/NAmw4RWW6NWKZDi4bLDhwAI6fyem3UWZuaZapCaAF4NCGNAY1cYBtxzlkizAAyHatFoCQngPSmMOYAJLIhXNGjxnhI5/7Wqlm/3DxOQ07ds9x2C1Qs1s9zNs95fK9rxv7RvPUx3+8a6ODkNxOqu5pWn9XR98car/JWEAHF//8mfVfNVyeL0Bh9vldtqUWlN9372/aNNy3Q6+mzOpMu2crdCh+Sq1svo+dcBJE7GStWtnxnLHSuqgX94wEBG6DGXRIGB/T+N3vqvppCwkwRqWkFeWmqGWHlG18UkMe5BSbjaUIerv1IZtB9FgBpBAWsO/dzmlv4+17bD5eAt6GRKs9mf5l418W+OW3PvThYUN/H9LSBINWmWaf4bLUhNk2NuYT0k/HlU+GP06HZeaAtoNuGCkSy6FTLNJKtUkAxexrr5qs9adN0yvvWCTkqj66Ls/fIKxSpyO69ZoVYdPhLanokXTs/aCd7b1b3jYblNriqLo5WK6+s73X/1Ho/6XnAFw3Hvz57SmgbUOs1p1VCsVR7WQWKGO3v/jDm89lEoV6dZtJaoHh+ncc88la9dXaV2nm/YtlK1HH49ROFlS/Ha5jHGwRfrXcLf8bnlyqCwaPSwBWdAjwWOIpbuZ7W+aibhvUgaXEHJFiTempUUalbfwKEBo1Pq3s53uZWKutEtmEEsfLcT72eZj4SMzwRB/TpiZrOSX1Tne0r/3OICRssx8EzjPpGwuTTBGOcxM1RKRWgO+P3uwBHcX3w18AA7DsugEXg+sAQ3gdFhbzuulLa9dqXSt3Eyf/srPaDrpoIvf9Cba//1P0ka+PzGM21t51qecbWtvDYeCZrlarQbQq12u6O/Zeu2LsvsvOQPg+MatX7TXNZ/D5XQ67DabPb88drJt9Hvf8ttq7gcPOWj4hIuos6Od5n95I526MkQlAMW4bu3anabCRJqCGikR7d/dLZRTwWY2ext21COReq4RR0B7NaKJo4sScAFLhNyyfQqva/JKuw6gGQrJkCsKMXpg88dY6wAz8GtSKMeG3S81ijgMCdr8LMmdqGtUpAeAzxhlRllAcRLb70H+rFF+X9orgWy20d+PaeCCcd2SqWEqXHwOBzJiVDFZEad14VntdMrrjlHa+kYoMTNPNz5wkLo2nEmDA/2097vXU3fYSZXIuq+vO+N/fwwrS6KxmN7Z3aknF2f0y6++7kXb/ZeFAe6/62bF6dDsljviqJXLjpphaIXY2LnOyX/6umXZ7fbmftG/no/NsUp1ifRx3ajRbKJE2/dnrH37UuQyTGXAJk9qfbNMlKCdKuCQfjUkCzZ5nB+fOSRn7M+xNLb7ZIoZ4KrARBgJyIJKgEn49IjfI3DzNBO+v00OaBjpkVM3MYsf/XpVmwxKAaUDWIb5s44m2ZcHc1Jhl1VnbTQ9J8PI6+FSMjPEWVs8AtMSkJoH54kJHwCWME1giCq/dnueLH+fjy4+tYXWHtWrtPT0UJTdvL17FxmHmBRp5/vDdi63PEv1ljXf2XjGO7aOjR4yO9radLLbdLOU0a/40Mefs8z7T8YAOL71tVuUes1wVFSvPezzOYyqbsss7HlD7dD/vW2g2eNUbHY6nChTjnUjpCPI4tXk12hqsUgHlyrWY7szpOd0pVORtnl9Y8N2T7OU8EOsnsON6CEyfxNRqRlwFUZJMkdbUHbWICffGpKmAHV2LUy8uZQkPIYuI8BjianMMuIXaZZoH24oilcVfn9XXRZwLvLj7kG51BluJ1rI0QG1nl8f4e+ssWbYoUtvAPX94/w9CbizwC8GvAKb1b4maJ1+bKs6sLaLfMEmyizGaN+BOTIYhQbdNkGIGFyPjs3fb1t/3lVmrV5zud16KpvSvUrNuOya618S0PeyMgCO++/8iupgTaBrfrtb0xypZMqm6bGzC89882vdEa/bz3p2Ll6keMGgKiMiTLiEm5jIG2wHdWvboTzFpvLUblpKK9/AnohMlLgagC1dlN4Bomz4QXQNhGvDjp2qrMdDORbUOTwIxOpxoN0aETz8DtfPaZN9gZjk8fQs3/cm+Xd0DANwpnRpMlwNN7G/WTZrjMblTuAoPz/Cn3uSKjd9L7EGmOTXP1VubPvi51bhi5td1nFn9tHaDS1KmNEuEkozs0Wam55nd9JgDygotqQusougtK+/79y3XXNtsVg0o/G4nkondZdVNS67+rqXhfgvCwNIJviyWrNUu80TtIfZPUwmElpmaew4mnj4ng6f2QQHv4SSafah0HTZxmLtQ9kYJn/naqwNDGt6PEuVRFnpUGWBCDQBqo3hzqGnD2nhZreUNCRUlvj/E5rk8CjE872KjPSBOcAMMAGY0uGD3S9iBTsGQEgUj3Pxa/J1MaRwDRlehrZB4Afrjv2Yf+CVI2OgATyNjt0+klHJZbfEDof4uWlR3GmzPtLspKERP9kv3Kh4/V5aZvsyNZVi78SgCH+AgjI0y0aLOKG2o27sP/rsLwQj4frIqlXG0vxhI5NY1t/53q0vG/FfNgbAcR8zQSgYtFdtXkc5m2Vd4NDcqjE09tObvt2kVQccVOMbUSOduSFbZpPgtVGExdLNejyRw3g1lXYdLluz4xmsnMVAb+ph4qb55mb5Z4Qfx1iawqok1iRcuAaIRNEoXC2UZIvWK/7bFr+sSsLyaZRr72NJzmBfD793k1u2s+E5H7qO0ZTKv4f4/b12scBcvLevRWqAUUPmIWCQMbcgzO/ZjBH3/HiHTbG6WlzW5m6PcibbuLYNg5RscVN0OUfP7j5M6WyF2hj/RAIaJdI6RQt6dfiUSz684pjTHkjls5ai2oyQ36Nno3PGZX/38kn+y84AOL751ZtV9l21Yk1z9Pb02BPRqCOTSvgTz/zz7YHK3FnI8tltJmMC2D+5qzfD4hgtWLSqWaM2n0pj7CkciOk0tVAiPzMCwviYFwQVO2STg5lQUIYOYmgItIA0gofib6gw3ss/KxoEY+9R5BMYy4nADf4Wscl9fqjfh6QH+PEv+fFRIDCWNpkyld3nlUUhE7r83BhJ6T/IPyerihWKOKh12E8n+TTFbPXTMxMlWnQ5KOhil65eoUqhKvIJHlZ3AJfxgrp09Pl/+65ge++TimYzA4GgMT87bTDo1d+99SMvOeB7xRkAx3133qzYkTMMttlnZmbsYa/XoeuGOr/7F1eVx7f/XXtAs1cYFC6la1TkG//rqJtOe+3pbGT302tCy6IfbzlToxnGB1NsmMeWK1RkUfVYpIzw2ecs6V4dyRDigjBHGFVFbPZFHX+hwTSNXI54HjMiqg1GAVN0N4g5xT+MF+lQ4z2NKS3U2N72b0yz3GBCy2WzhluctIZ/+iIOZdPJw+RRddq2K0vferYiunez8Xlqi24TVcxTMdlqHukdfmT16ZdeEWpqTWCM2tLSktEcDhpmJW9c/sFXhvivCAPguPuOryi1SkGruyJ2dmu1arHo8LjcSmJhfFN8549u95nFAZemCOnaURumN17yZpo7tIvcMz+jJp+LbbVK+SL2D1ZYckxrD8Py6YzBiJwNSKWuiN58krmAIzsF6o3HYApfg/C/321sNl6P16ENfVXjOTDAkXkEYJT+BtFn+KedpOTnNNUabHJSuNlBm3td1BJxK5FmH3sTdTKdPpqcTNJT0yUyujfRW9/yFvrRvTdTX3WCwauNFjJGWes79vNnX/T2u0xFqedyOWOwu7s2OTVmsAtVu/Kaj75ixH/FGODIccvnP6WZdo9W1msA1FgrralkudOj2z4U27ft3X6nTVPbR6i5pZVyC6NULeVEp66HoTuYgAGxWDQt2s3Zd06WTWsxZ9B4vMpgripW1JUsS2kE4Kgxf0Fu9GhcrNog+pFDo38fQxNsEBgELzQYw5C/WwGXjYZCfB4+G63rctLGlS2KPeijDgYGmViG0lH2XpaLNBUtUIWBRxwj4ZtbqW1oDUX3PSa2jIZ7ep8cPOlNH7R7QmPlfM5as2GDUSgUamY2ZZQM3bjq2o+9ZBG+VyUD4LjpMzeoZLPb56JJra+z0+6w27XOzk5lYfrgUVOP/eAzWnFps98lFzOVmcj1OqZxKWTZsJTSLqqD4OS77SqpjKIrNUvMLc5WTMpWTStWMmmOwRV+L7AbUK1ZYoDkf3WtR+oL6vKxhUphNF342e/EXoE2r0YjLXZa1emF26j09AbEsulwq49sLO0VVlsH9y/Q3GKWMhnMD1LEokmED31OhTKY/+9wJ1acfP7nBo56zQPJZLLucDhqy+Pj9ea+HsPrtNcq5Urtgx+57hUn/p+EAQQTfPbTCku2Vlc0rbunjxWqZc+zpxAIhZS5/dsvmtnxLx921vJ9HqdGTk0RyD5fqcutmuUaedkshAOMpH129qVrNLlUYimtizIrDIKIZmvkZI2xmNateMkUWzXFoKU6KWUdQ+PlyHz45D7UL9ZNBVvBsH/PjR2xlmWZzAr9TbK1fHAwRBiQ9dvRnNjRu6bVQ7FEgUoV1jrYDBIvisAU9gliktpyzjjCXaXONZvvi6w87saVq9ZmDUM3M5lMzePx1FLRxZqbiX/NdZ98RVX+q4IBjhy3fOEfbN5gSPOFWzTLMDSvy2Wvm6aaL+QdEzt/fWl03yPvd9SLvSG3nd05k2+w3GsMiYZWQJJnV1ylnL2Ntgy3UE9tXM4kqpliL1GWwaJeqVFHxC4Qvpi5xwxk8PMu1iAudjvFoEZFpWDASS63m1TmMiy7dLIWioRcFM+yWeEvKjA1v/lkic4571xKHthO7tSkcDf9XjtlCtJbszOzHmagWlPV8sgxJz247pTXf8XhDcxPjI9TJBKp9fb21hfZv8+mEnWfz1e75qMf/5NI/auGAXB87ZabWGcaNm8oolVMVXM5HDavx2NfXlhUy+WiM7c4+obFfdveVU0tbvSyRvAy0eSGD1UMZ9yTctDIKRfRqqFe2vngF0Xixo7Fzw4bWWAUw6KuVrfAEVhOhWHO8WSJDiaw5MmkjR2szsNuJr6NffQaPT1ZoHbWBKwXGJxbIl9Rrug0WfZS/7Fn0SWXXEJfvvpvKGTx61gbKMxIS5maWLdb1zzxrg0nfntk82l3h5rbFlV2guPxONK4NV3X63bLqFUqldpHb/j7lzSh82KOPzkDHDnuvfNWFr66xjfOptctWzIe15yqqmGnSj6fJ61eOmr06V+9o7x48HzFqAQVJhHG0xgmS/LIiVSZ20fFTJJqjBmKVUvM7OfPEeYDSyjAEIrI7Cm0WPUwkg/RW9/6Vnr6X+6mgJKnQrVO+QKrc5ZmL/trIbtCHrsiIok2gSYVWrnxaBqL8WvGnxHYADsGslXL8Lb3Pblq88n3bXrN2T/PF0ql5uYma2xsrA6JBwNUi/l63ajWVM1uXvMnsvX/1fGqYYAjx9dv+7LK0mIrG5bW2tFpS0ajNjYLWnt7u5pNZ6yWloh/cu+TJ0/t3nFxYXniJEUvNbvsmDymNZo3TCpjPxH/kqtAnVvkdqjktCsCEBr8UyAnnXbpuynIWuEX99wo5v4FMdGUzUqOMUOphp2ACgVd8vbUBROp4nOwrDngtlc9ze3PMNEf6lt99MNQ86LEz+2uM4NBvdfZr6/XquW6XinVGfDUt179/HP4lsxAW43mIVGf+nLd71cdAxw57vjyl1RW17ZcqWJbu36jbXFx0cboWQ0FArZiuayWyhWztTnimdj/zLqZA7vOiM+ObS6moustvRIR8/750twM/so1DI60CTBZqJjiirPsLgaCASqwZvGzCvdjPjEKOlhzZDC23iZrDIA1gOgrpFVDra1jwdbOnQOrj3mkqWdoh9sXjLucTltTU5M5MzNTZ2BXX15eNlevXm3GlhZqpXzOVB2O+pXv3/pCCO9UZHzqFTuUb1xzggpX699OgvnuPTc98aqxUXfcfJNiMUawOdy2lrY2VXO4bKlUCiFmG7QCP1bYRChOl8ss5nPecj7dNT0xvrKQXN6YScR6K4V8VymfbHWp9ZBVr3tsiskMVGNzY6kY5GxTFYx8NDWHo8LIP6+6vHFvILQcbm6d9Te1HGzvHT7YPTA8zZojVSqXLTcjR1VVTcMw6k6n0xweHjYh7Zlk3KwZeh2ztNhymZe998oXrOotOfLgj2rx+q+O6y8+Rj2yHlZpFLfYbcLVERhJueuDx7mwFbtWl/vwMrmqtfXOna8oFz7f46u33cLYrKbaHC6+x3a1q6cXDKCyb8333QbTwbRRFSaOYrfbLZ/fz85FzVQVy1FFuVq5ohULWQwttpcKBU14FHWzvHrNGsPrD1QVUoyDo6N6T0+PlUgkVLiHLS3Nlp8/h8GbVSgUTHiIkPq5uTnTqakmM4SpV6t1u9Nlvvvy975o+27JACbo9JIkgq48e62zme2bcIVNbEKxROU0wDA8pVetCXiu4+6v3aUaelV1uDxqLptRs7m8Eoo0qSC+1+tVm5ubFSaiwpiAnQbEdxSq1WoKGERvDIbgxxYzDw0NDbEnEAaRae/evRaDNysajbI3YTfBDHgdP2eWigWrwKo9FAyYhq6bAHVXXPn+VxWoe6HHf1sG+P3jzjtuRyUSQumqXq0oNrtTYb9bSbFm8AUClEimwBRCC2JuMAiN4ZDYFhrPZq1Vq1Ypra2tFttwWlhYsFoYxS8vLVo2m2Y1t7RYuXTKtGmapdkdlt3hsN5z2eX/rYn++8f/CAb4z45bb7lFQbAAkUHLNC14BzXWDiZ2C4n5vqrY/4cxsCJvYBOaF/MwxXBpPL7ivS9epb/aj/+xDPDf9fgE0+STv7fa9eU+/sIAf+bHXxjgz/z4CwP8mR9/YYA/8+MvDPBnfvw/WTh9S4wWeSgAAAAASUVORK5CYII="
}'
{
"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_applicationsRequest 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: name , path , working_directory , icon_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
- Response 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
]
}'
{
[
{
"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/launchpadsRequest 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
- Response 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"
[
{
"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_idRequest 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
- Response 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}"
{
"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_applicationRequest 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
- Request Example
- Response 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"
}'
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_poolRequest 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
- Response 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"
}'
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_volumesRequest 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
- Response 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"
[
{
"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_volumesRequest 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
- Response 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"]
}'
{
"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
Returns all user volumes associated with an account.
GET/accounts/:account_id/user_volumes_backupsRequest Parameters
Parameter | Description | Param Type | Data Type | Required |
---|---|---|---|---|
account_id | Your Frame account ID. | URL | String | True |
- Request Example
- Response 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"
[
{
"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
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.
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
- Response 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"
[]
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/restoreRequest 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
- Response 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"
{
"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_modeRequest 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
- Response 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"
{
"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_groupRequest 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
- Response 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"
{
"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_idRequest 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
- Response 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}"
{
"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