Skip to content

Endpoint reference

Every path and method of the PVE API schema that fakepve answers, under /api2/json: 680 methods on 449 paths.

  • stateful (hand-written): 177 methods keep state and follow PVE's rules (see How it works).
  • generic (from the schema): 503 methods check parameters and permissions as the schema states them and answer with a value of the right shape. A write succeeds and changes nothing.
  • routed to a hand-written handler that answers 501: 0 methods whose route is claimed by a stateful family (VM status/{action}) but whose action is not modelled.

For each method: Access is the permission rule from the schema (evaluated against pve.grant; root is always allowed), Required the parameters that must be sent (path parameters included), and Errors the names that pve.fail(..., error=name) accepts, from the error catalogue. Errors marked "in the task" are raised in a PVE worker: the request succeeds and the task ends with the error.

Besides the listed names, these cross-cutting errors apply, whatever the catalogue says: invalid_ticket and authentication_failure (401, any method that needs a login); invalid_csrf, no_quorum (writes); config_lock_timeout (writes to a QEMU or LXC guest); not_implemented (501); no_route_to_host (595) and hostname_lookup_failed (500) on paths with a {node}; permission_denied (403, methods that are not open to every user).

Contents

access

/access

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/access/acl

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • PUT: generic (from the schema)
  • Access: Permissions.Modify on the given path
  • Required: path, roles (+5 optional)
  • Errors: parameter_verification_failed, param_path_invalid_acl_path, role_does_not_exist, param_role_cannot_role_requires, param_role_cannot_role_propagation, param_role_cannot_role_requires_2, group_does_not_exist, user_does_not_exist, not_valid_token_id_not, no_such_token_user, user_name_too_short, user_name_too_long, value_does_not_look_like, no_such_user

/access/domains

  • GET: generic (from the schema)
  • Access: no login
  • Required: none
  • POST: generic (from the schema)
  • Access: /access/realm: Realm.Allocate
  • Required: realm, type (+41 optional)
  • Errors: domain_already_exists, unable_use_reserved_name, unable_create_builtin_type, check_connection_parameter_can_only

/access/domains/{realm}

  • DELETE: generic (from the schema)
  • Access: /access/realm: Realm.Allocate
  • Required: realm
  • Errors: authentication_domain_does_not_exist
  • GET: generic (from the schema)
  • Access: /access/realm: Realm.Allocate or Sys.Audit
  • Required: realm
  • Errors: domain_does_not_exist
  • PUT: generic (from the schema)
  • Access: /access/realm: Realm.Allocate
  • Required: realm (+42 optional)
  • Errors: domain_does_not_exist, check_connection_parameter_can_only, no_options_specified

/access/domains/{realm}/sync

  • POST: generic (from the schema), starts a task
  • Access: (/access/realm/{realm}: Realm.AllocateUser and /access/groups: User.Modify)
  • Required: realm (+6 optional)
  • Errors: param_realm_realm_does_not, cannot_sync_realm_type_only, param_scope_not_passed_parameter

/access/groups

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • POST: generic (from the schema)
  • Access: /access/groups: Group.Allocate
  • Required: groupid (+1 optional)
  • Errors: group_already_exists

/access/groups/{groupid}

  • DELETE: generic (from the schema)
  • Access: /access/groups: Group.Allocate
  • Required: groupid
  • Errors: group_does_not_exist
  • GET: generic (from the schema)
  • Access: /access/groups: Sys.Audit or Group.Allocate
  • Required: groupid
  • Errors: group_does_not_exist
  • PUT: generic (from the schema)
  • Access: /access/groups: Group.Allocate
  • Required: groupid (+1 optional)
  • Errors: group_does_not_exist

/access/openid

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/access/openid/auth-url

  • POST: generic (from the schema)
  • Access: no login
  • Required: realm, redirect-url
  • Errors: authentication_domain_does_not_exist, wrong_realm_type_openid

/access/openid/login

  • POST: generic (from the schema)
  • Access: no login
  • Required: code, redirect-url, state
  • Errors: authentication_failure

/access/password

  • PUT: stateful (hand-written)
  • Access: (the user itself or (realm of the userid: Realm.AllocateUser and on /access/groups: User.Modify))
  • Required: password, userid (+1 optional)
  • Errors: permission_check_failed, no_auth_domain_specified, auth_domain_does_not_exist

/access/permissions

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • Errors: not_valid_token_id_not

/access/roles

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • POST: generic (from the schema)
  • Access: /access: Sys.Modify
  • Required: roleid (+1 optional)
  • Errors: param_roleid_cannot_use_role, role_already_exists, role_does_not_exist, invalid_privilege

/access/roles/{roleid}

  • DELETE: generic (from the schema)
  • Access: /access: Sys.Modify
  • Required: roleid
  • Errors: auto_generated_role_cannot_deleted, role_does_not_exist
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: roleid
  • Errors: role_does_not_exist
  • PUT: generic (from the schema)
  • Access: /access: Sys.Modify
  • Required: roleid (+2 optional)
  • Errors: auto_generated_role_cannot_modified, role_does_not_exist, invalid_privilege

/access/tfa

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/access/tfa/{userid}

  • GET: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify, Sys.Audit)
  • Required: userid
  • POST: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: type, userid (+5 optional)
  • Errors: tfa_config_lock_cannot_acquired

/access/tfa/{userid}/{id}

  • DELETE: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: id, userid (+1 optional)
  • Errors: tfa_config_lock_cannot_acquired
  • GET: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify, Sys.Audit)
  • Required: id, userid
  • Errors: no_such_tfa_entry
  • PUT: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: id, userid (+3 optional)
  • Errors: tfa_config_lock_cannot_acquired

/access/ticket

  • GET: generic (from the schema)
  • Access: no login
  • Required: none
  • POST: stateful (hand-written)
  • Access: no login
  • Required: password, username (+6 optional)
  • Errors: authentication_failure, ambiguous_case_insensitive_match_username

/access/users

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • POST: generic (from the schema)
  • Access: (realm of the userid: Realm.AllocateUser and on /access/groups: User.Modify)
  • Required: userid (+9 optional)
  • Errors: user_already_exists, no_such_group, ambiguous_case_insensitive_match_username, no_auth_domain_specified, auth_domain_does_not_exist, user_name_too_short, user_name_too_long, value_does_not_look_like

/access/users/{userid}

  • DELETE: generic (from the schema)
  • Access: (realm of the userid: Realm.AllocateUser and on /access/groups: User.Modify)
  • Required: userid
  • Errors: user_name_too_short, user_name_too_long, value_does_not_look_like
  • GET: generic (from the schema)
  • Access: on /access/groups: User.Modify, Sys.Audit
  • Required: userid
  • Errors: no_such_user, user_name_too_short, user_name_too_long, value_does_not_look_like
  • PUT: generic (from the schema)
  • Access: on /access/groups: User.Modify
  • Required: userid (+9 optional)
  • Errors: no_such_group, no_such_user, user_name_too_short, user_name_too_long, value_does_not_look_like

/access/users/{userid}/tfa

  • GET: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify, Sys.Audit)
  • Required: userid (+1 optional)
  • Errors: auth_domain_does_not_exist, user_name_too_short, user_name_too_long, value_does_not_look_like

/access/users/{userid}/token

  • GET: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: userid
  • Errors: no_such_user, user_name_too_short, user_name_too_long, value_does_not_look_like

/access/users/{userid}/token/{tokenid}

  • DELETE: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: tokenid, userid
  • Errors: no_such_token_user, user_name_too_short, user_name_too_long, value_does_not_look_like, no_such_user, value_does_not_look_like_2
  • GET: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: tokenid, userid
  • Errors: no_such_token_user, user_name_too_short, user_name_too_long, value_does_not_look_like, no_such_user
  • POST: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: tokenid, userid (+3 optional)
  • Errors: param_tokenid_token_already_exists, token_already_exists, no_such_token_user, no_such_user, user_name_too_short, user_name_too_long, value_does_not_look_like, value_does_not_look_like_2
  • PUT: generic (from the schema)
  • Access: (the user itself or on /access/groups: User.Modify)
  • Required: tokenid, userid (+5 optional)
  • Errors: param_delete_unknown_option, no_such_token_user, user_name_too_short, user_name_too_long, value_does_not_look_like, no_such_user, value_does_not_look_like_2

/access/users/{userid}/unlock-tfa

  • PUT: generic (from the schema)
  • Access: on /access/groups: User.Modify
  • Required: userid
  • Errors: tfa_config_lock_cannot_acquired

/access/vncticket

  • POST: generic (from the schema)
  • Access: no login
  • Required: authid, path, privs, vncticket (+1 optional)
  • Errors: authentication_failure

cluster

/cluster

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/acme

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/acme/account

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • POST: generic (from the schema), starts a task
  • Access: root only
  • Required: contact (+5 optional)
  • Errors: param_name_acme_account_config
  • Errors in the task: acme_account_config_file_already, registration_failed

/cluster/acme/account/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: root only
  • Required: none (+1 optional)
  • Errors: param_name_acme_account_config
  • Errors in the task: acme_account_config_file_does
  • GET: generic (from the schema)
  • Access: root only
  • Required: none (+1 optional)
  • Errors: param_name_acme_account_config
  • PUT: generic (from the schema), starts a task
  • Access: root only
  • Required: none (+2 optional)
  • Errors: param_name_acme_account_config
  • Errors in the task: acme_account_config_file_does

/cluster/acme/challenge-schema

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/acme/directories

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/acme/meta

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: none (+1 optional)

/cluster/acme/plugins

  • GET: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: none (+1 optional)
  • Errors: acme_plugin_not_defined
  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id, type (+5 optional)
  • Errors: acme_plugin_id_already_exists

/cluster/acme/plugins/{id}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id
  • GET: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id
  • Errors: acme_plugin_not_defined
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id (+7 optional)
  • Errors: acme_plugin_id_does_not, no_such_option, unable_delete_required_option

/cluster/acme/tos

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)

/cluster/backup

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: none (+38 optional)
  • Errors: job_already_exists, param_starttime_starttime_schedule_cannot, param_schedule_neither_starttime_nor, param_all_option_conflicts_option, param_exclude_option_conflicts_option, param_pool_option_conflicts_option, param_notes_template, param_vmid_property_missing, job_state_already_exists, parameter_verification_failed, invalid_json_data

/cluster/backup-info

  • GET: generic (from the schema)
  • Access: root only
  • Required: none

/cluster/backup-info/not-backed-up

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: unexpected_error_unknown_guest_type, configuration_file_does_not_exist

/cluster/backup/{id}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id
  • Errors: param_id_no_such_job
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: id
  • Errors: param_id_no_such_job
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id (+38 optional)
  • Errors: no_options_specified, no_such_vzdump_job, param_delete_unknown_option, only_root_pam_may_edit, param_starttime_starttime_schedule_cannot, param_schedule_neither_starttime_nor, param_all_option_conflicts_option, param_exclude_option_conflicts_option, param_pool_option_conflicts_option, param_notes_template, param_vmid_property_missing, parameter_verification_failed, invalid_json_data

/cluster/backup/{id}/included_volumes

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: id
  • Errors: param_id_no_such_job, vmid_neither_qemu_nor_lxc, configuration_file_does_not_exist, pool_does_not_exist, error_strange_id

/cluster/bulk-action

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/bulk-action/guest

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/bulk-action/guest/migrate

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: target (+5 optional)
  • Errors: permission_check_failed
  • Errors in the task: some_guests_failed_migrate, unknown_guest_type

/cluster/bulk-action/guest/shutdown

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: none (+5 optional)
  • Errors: permission_check_failed
  • Errors in the task: some_guests_failed_shutdown, unknown_guest_type

/cluster/bulk-action/guest/start

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: none (+4 optional)
  • Errors: permission_check_failed
  • Errors in the task: some_guests_failed_start, unknown_guest_type

/cluster/bulk-action/guest/suspend

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: none (+5 optional)
  • Errors: permission_check_failed
  • Errors in the task: some_guests_failed_suspend, unknown_guest_type

/cluster/ceph

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/ceph/flags

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: ceph_not_fully_configured_missing
  • PUT: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: none (+11 optional)
  • Errors: ceph_not_fully_configured_missing
  • Errors in the task: could_not_set_unset_flags

/cluster/ceph/flags/{flag}

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: flag
  • Errors: ceph_not_fully_configured_missing
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: flag, value
  • Errors: ceph_not_fully_configured_missing

/cluster/ceph/health-mute

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: none
  • Errors: ceph_not_fully_configured_missing

/cluster/ceph/health-mute/{code}

  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: code, value (+2 optional)
  • Errors: param_code_cannot_mute_ceph, param_ttl_not_usable_duration, could_not_mute, ceph_not_fully_configured_missing

/cluster/ceph/metadata

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: none (+1 optional)
  • Errors: binary_not_installed

/cluster/ceph/restart-bulk

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: service-type (+4 optional)
  • Errors: param_only_outdated_only_supported, binary_not_installed
  • Errors in the task: could_not_evaluate_ceph_health, ceph_cluster_has_blocking_health, ceph_cluster_has_blocking_health_2, ceph_reports_blocking_health_err, recovery_did_not_allow_restart, daemon_registered_host_which_not, ceph_reports_not_safe_stop, no_scope_given_lock_cluster, wait_remote_task_timeout_required, polling_remote_task_failed_times, remote_task_ended_status, remote_task_did_not_finish, another_ceph_bulk_restart_already, daemon_did_not_come_up, unknown_daemon_type

/cluster/ceph/status

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: none
  • Errors: binary_not_installed

/cluster/config

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • POST: generic (from the schema), starts a task
  • Access: root only
  • Required: clustername (+4 optional)
  • Errors: cluster_config_already_exists, no_authentication_key_available, invalid_corosync_config_unable_read, activating_corosync_conf_new_failed, no_name_specified, no_ip_address_specified, can_t_parse, unable_create_directory, unable_create_dir, unable_generate_pve_www_key, unable_generate_pve_ssl_key, generating_pve_root_certificate_failed, no_ip_specified, unable_generate_pve_certificate_request, ca_expires_less_than_weeks, unable_generate_pve_ssl_certificate

/cluster/config/apiversion

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/config/join

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none (+1 optional)
  • Errors: not_cluster_no_join_info, unknown
  • POST: generic (from the schema), starts a task
  • Access: root only
  • Required: fingerprint, hostname, password (+4 optional)

/cluster/config/nodes

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/config/nodes/{node}

  • DELETE: generic (from the schema)
  • Access: root only
  • Required: node
  • Errors: cannot_delete_myself_cluster, ip_not_known_host_cluster, invalid_corosync_config_unable_read, activating_corosync_conf_new_failed, no_authentication_key_available
  • POST: generic (from the schema)
  • Access: root only
  • Required: node (+6 optional)
  • Errors: corosync_address_already_used_link, corosync_link_exists_cluster_config, corosync_link_specified_new_doesn, no_links_no_fallback_ip, cluster_has_links_but_only, no_links_given_but_multiple, can_t_add_existing, invalid_corosync_conf, error_unsupported_old_api_version, unable_create_directory, invalid_corosync_config_unable_read, activating_corosync_conf_new_failed, no_authentication_key_available

/cluster/config/qdevice

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/config/totem

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/firewall

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/firewall/aliases

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: cidr, name (+1 optional)
  • Errors: param_name_alias_already_exists, implement_subclass

/cluster/firewall/aliases/{name}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: name (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: name
  • Errors: param_name_no_such_alias, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: cidr, name (+3 optional)
  • Errors: param_name_no_such_alias, param_name_alias_already_exists, implement_subclass

/cluster/firewall/groups

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: group (+3 optional)
  • Errors: param_group_security_group_does, param_group_security_group_does_2, param_group_security_group_already, can_t_lock_firewall_config

/cluster/firewall/groups/{group}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: group
  • Errors: security_group_not_empty, no_such_security_group
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: group
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: action, group, type (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/firewall/groups/{group}/{pos}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: group (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: group (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: group (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/firewall/ipset

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: name (+3 optional)
  • Errors: param_name_ipset_does_not, param_name_ipset_does_already, param_name_ipset_already_exists, implement_subclass

/cluster/firewall/ipset/{name}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: name (+1 optional)
  • Errors: ipset_not_empty, implement_subclass
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: name
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: cidr, name (+2 optional)
  • Errors: param_cidr_zero_prefix_alias, param_cidr_address_already_exists, param_cidr_zero_prefix_not, implement_subclass, no_such_alias, value_does_not_look_like

/cluster/firewall/ipset/{name}/{cidr}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: cidr, name (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: cidr, name
  • Errors: param_cidr_no_such_ip, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: cidr, name (+3 optional)
  • Errors: param_cidr_no_such_ip, implement_subclass

/cluster/firewall/macros

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none

/cluster/firewall/options

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none
  • PUT: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: none (+8 optional)
  • Errors: param_delete_no_such_option, no_test_directory_specified, unable_apply_firewall_changes

/cluster/firewall/refs

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none (+1 optional)

/cluster/firewall/rules

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: action, type (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/firewall/rules/{pos}

  • DELETE: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: none (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /: Sys.Modify
  • Required: none (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/ha

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/ha/groups

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: cannot_index_groups_ha_groups, no_such_ha_group
  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: group, nodes (+4 optional)
  • Errors: cannot_create_group_ha_groups, types_does_not_match, ha_group_id_already_defined

/cluster/ha/groups/{group}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Console
  • Required: group
  • Errors: cannot_delete_group_ha_groups, ha_group_used_service
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: group
  • Errors: cannot_read_group_ha_groups, no_such_ha_group
  • PUT: generic (from the schema)
  • Access: /: Sys.Console
  • Required: group (+6 optional)
  • Errors: cannot_update_group_ha_groups, types_does_not_match, no_such_ha_group, no_such_option, unable_delete_required_option, unable_delete_fixed_option

/cluster/ha/resources

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none (+1 optional)
  • Errors: no_such_resource
  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: sid (+8 optional)
  • Errors: types_does_not_match, invalid_parameter_group_ha_groups, resource_id_already_defined, unable_detect_sid_vmid_does, unable_parse_service_id, unknown_pve_resource_type

/cluster/ha/resources/{sid}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Console
  • Required: sid (+1 optional)
  • Errors: cannot_delete_service_not_ha, unable_detect_sid_vmid_does, unable_parse_service_id, unknown_pve_resource_type
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: sid
  • Errors: unable_detect_sid_vmid_does, unable_parse_service_id, no_such_resource, unknown_pve_resource_type
  • PUT: generic (from the schema)
  • Access: /: Sys.Console
  • Required: sid (+9 optional)
  • Errors: types_does_not_match, invalid_parameter_group_ha_groups, ha_group_does_not_exist, unable_detect_sid_vmid_does, unable_parse_service_id, service_error_state_must_disabled, unknown_pve_resource_type, no_such_resource, no_such_option, unable_delete_required_option, unable_delete_fixed_option

/cluster/ha/resources/{sid}/migrate

  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: node, sid
  • Errors: unable_detect_sid_vmid_does, unable_parse_service_id, resource_not_ha_managed, service_error_state_must_disabled, unknown_pve_resource_type

/cluster/ha/resources/{sid}/relocate

  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: node, sid
  • Errors: unable_detect_sid_vmid_does, unable_parse_service_id, resource_not_ha_managed, service_error_state_must_disabled, unknown_pve_resource_type

/cluster/ha/rules

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none (+2 optional)
  • Errors: no_such_ha_rule
  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: none
  • Errors: cannot_create_ha_rule_ha, ha_rule_already_defined, no_resources_were_specified, cannot_use_unmanaged_resource_s, no_nodes_were_specified, cannot_use_non_existent_s, rule_invalid

/cluster/ha/rules/{rule}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Console
  • Required: rule
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: rule
  • Errors: no_such_ha_rule
  • PUT: generic (from the schema)
  • Access: /: Sys.Console
  • Required: none
  • Errors: cannot_update_ha_rule_ha, ha_rule_does_not_exist, no_resources_were_specified, cannot_use_unmanaged_resource_s, no_nodes_were_specified, cannot_use_non_existent_s, rule_invalid

/cluster/ha/status

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/ha/status/arm-ha

  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: none

/cluster/ha/status/current

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: undefined

/cluster/ha/status/disarm-ha

  • POST: generic (from the schema)
  • Access: /: Sys.Console
  • Required: resource-mode

/cluster/ha/status/manager_status

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • Errors: undefined

/cluster/jobs

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/jobs/realm-sync

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/jobs/realm-sync/{id}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id
  • Errors: param_id_no_such_job, could_not_delete_state
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: id
  • Errors: param_id_no_such_job
  • POST: generic (from the schema)
  • Access: (/access/realm/{realm}: Realm.AllocateUser and /access/groups: User.Modify)
  • Required: id, schedule (+6 optional)
  • Errors: job_already_exists, param_realm_no_such_realm, param_realm_only_ldap_ad
  • PUT: generic (from the schema)
  • Access: (/access/realm/{realm}: Realm.AllocateUser and /access/groups: User.Modify)
  • Required: id, schedule (+6 optional)
  • Errors: no_job_options_specified, no_such_realm_sync_job

/cluster/jobs/schedule-analyze

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: schedule (+2 optional)
  • Errors: unable_parse_calendar_event_event

/cluster/log

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)

/cluster/mapping

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/mapping/dir

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: wrong_check
  • POST: generic (from the schema)
  • Access: /mapping/dir: Mapping.Modify
  • Required: id, map (+1 optional)
  • Errors: dir_id_already_defined, specified_times, path_does_not_exist, path_exists_but_not_directory

/cluster/mapping/dir/{id}

  • DELETE: generic (from the schema)
  • Access: /mapping/dir: Mapping.Modify
  • Required: id
  • GET: generic (from the schema)
  • Access: (/mapping/dir/{id}: Mapping.Use or /mapping/dir/{id}: Mapping.Modify or /mapping/dir/{id}: Mapping.Audit)
  • Required: id
  • Errors: mapping_not_found
  • PUT: generic (from the schema)
  • Access: /mapping/dir/{id}: Mapping.Modify
  • Required: id (+4 optional)
  • Errors: dir_id_does_not_exist, specified_times, path_does_not_exist, path_exists_but_not_directory

/cluster/mapping/pci

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: wrong_check
  • POST: generic (from the schema)
  • Access: /mapping/pci: Mapping.Modify
  • Required: id, map (+3 optional)
  • Errors: pci_id_already_defined

/cluster/mapping/pci/{id}

  • DELETE: generic (from the schema)
  • Access: /mapping/pci: Mapping.Modify
  • Required: id
  • GET: generic (from the schema)
  • Access: (/mapping/pci/{id}: Mapping.Use or /mapping/pci/{id}: Mapping.Modify or /mapping/pci/{id}: Mapping.Audit)
  • Required: id
  • Errors: mapping_not_found
  • PUT: generic (from the schema)
  • Access: /mapping/pci/{id}: Mapping.Modify
  • Required: id (+6 optional)
  • Errors: pci_id_does_not_exist

/cluster/mapping/usb

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: wrong_check
  • POST: generic (from the schema)
  • Access: /mapping/usb: Mapping.Modify
  • Required: id, map (+1 optional)
  • Errors: usb_id_already_defined

/cluster/mapping/usb/{id}

  • DELETE: generic (from the schema)
  • Access: /mapping/usb: Mapping.Modify
  • Required: id
  • GET: generic (from the schema)
  • Access: (/mapping/usb/{id}: Mapping.Audit or /mapping/usb/{id}: Mapping.Use or /mapping/usb/{id}: Mapping.Modify)
  • Required: id
  • Errors: mapping_not_found
  • PUT: generic (from the schema)
  • Access: /mapping/usb/{id}: Mapping.Modify
  • Required: id, map (+3 optional)
  • Errors: usb_id_does_not_exist

/cluster/metrics

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/metrics/export

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none (+4 optional)
  • Errors: requested_list_contains_unknown_nodes

/cluster/metrics/server

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none

/cluster/metrics/server/{id}

  • DELETE: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: id
  • Errors: status_server_entry_does_not
  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id, port, server, type (+20 optional)
  • Errors: metric_server_already_exists
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: id, port, server (+22 optional)
  • Errors: no_such_server, no_such_option, unable_delete_required_option, unable_delete_fixed_option, cannot_set_delete_property_same

/cluster/nextid

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: param_vmid_already_exists, unable_get_any_free_vmid

/cluster/notifications

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/notifications/endpoints

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/notifications/endpoints/gotify

  • GET: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Audit
  • Required: none
  • POST: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name, server, token (+2 optional)

/cluster/notifications/endpoints/gotify/{name}

  • DELETE: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name
  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: name
  • PUT: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name (+6 optional)

/cluster/notifications/endpoints/sendmail

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: none
  • POST: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name (+6 optional)

/cluster/notifications/endpoints/sendmail/{name}

  • DELETE: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name
  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: name
  • PUT: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name (+8 optional)

/cluster/notifications/endpoints/smtp

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: none
  • POST: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: from-address, name, server (+9 optional)

/cluster/notifications/endpoints/smtp/{name}

  • DELETE: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name
  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: name
  • PUT: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name (+13 optional)

/cluster/notifications/endpoints/webhook

  • GET: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Audit
  • Required: none
  • POST: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: method, name, url (+5 optional)

/cluster/notifications/endpoints/webhook/{name}

  • DELETE: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name
  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: name
  • PUT: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify and (/: Sys.Audit, Sys.Modify or /: Sys.AccessNetwork))
  • Required: name (+9 optional)

/cluster/notifications/matcher-field-values

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: none

/cluster/notifications/matcher-fields

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: none

/cluster/notifications/matchers

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit or /mapping/notifications: Mapping.Use)
  • Required: none
  • POST: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name (+8 optional)

/cluster/notifications/matchers/{name}

  • DELETE: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name
  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit)
  • Required: name
  • PUT: generic (from the schema)
  • Access: /mapping/notifications: Mapping.Modify
  • Required: name (+10 optional)

/cluster/notifications/targets

  • GET: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit or /mapping/notifications: Mapping.Use)
  • Required: none

/cluster/notifications/targets/{name}/test

  • POST: generic (from the schema)
  • Access: (/mapping/notifications: Mapping.Modify or /mapping/notifications: Mapping.Audit or /mapping/notifications: Mapping.Use)
  • Required: name

/cluster/options

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: none
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: none (+25 optional)

/cluster/qemu

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

/cluster/qemu/cpu-flags

  • GET: generic (from the schema)
  • Access: (/nodes: Sys.Audit or /mapping/cpu: Mapping.Audit or Mapping.Use or Mapping.Modify)
  • Required: none (+2 optional)

/cluster/qemu/custom-cpu-models

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • POST: generic (from the schema)
  • Access: /mapping/cpu: Mapping.Modify
  • Required: cputype, reported-model (+6 optional)
  • Errors: custom_cpu_model_already_exists

/cluster/qemu/custom-cpu-models/{cputype}

  • DELETE: generic (from the schema)
  • Access: /mapping/cpu/{cputype}: Mapping.Modify
  • Required: cputype
  • Errors: custom_cpu_model_does_not
  • GET: generic (from the schema)
  • Access: (/mapping/cpu/{cputype}: Mapping.Audit or /mapping/cpu/{cputype}: Mapping.Use or /mapping/cpu/{cputype}: Mapping.Modify)
  • Required: cputype
  • PUT: generic (from the schema)
  • Access: /mapping/cpu/{cputype}: Mapping.Modify
  • Required: cputype (+9 optional)
  • Errors: cannot_delete_cputype, cannot_delete_reported_model, custom_cpu_model_does_not

/cluster/replication

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none
  • POST: generic (from the schema)
  • Access: any logged-in user
  • Required: id, target, type (+6 optional)
  • Errors: guest_does_not_exist, target_does_not_exist, source_does_not_match_current, source_target_must_not_identical, no_replicatable_volumes_found, replication_job_already_exists, guest_ids_reserved

/cluster/replication/{id}

  • DELETE: generic (from the schema)
  • Access: any logged-in user
  • Required: id (+2 optional)
  • Errors: param_keep_conflicts_parameter_force, no_such_job, guest_ids_reserved
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: id
  • Errors: no_such_replication_job
  • PUT: generic (from the schema)
  • Access: any logged-in user
  • Required: id (+8 optional)
  • Errors: no_such_job, no_such_option, unable_delete_required_option, unable_delete_fixed_option, guest_ids_reserved

/cluster/resources

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: no_storage_id_specified, storage_does_not_exist, storage_disabled, storage_not_available

/cluster/sdn

  • GET: generic (from the schema)
  • Access: /sdn: SDN.Audit
  • Required: none
  • PUT: generic (from the schema), starts a task
  • Access: /sdn: SDN.Allocate
  • Required: none (+2 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/controllers

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+3 optional)
  • Errors: no_sdn_controller_id_specified, sdn_controller_does_not_exist
  • POST: generic (from the schema)
  • Access: /sdn/controllers: SDN.Allocate
  • Required: controller, type (+17 optional)
  • Errors: sdn_controller_object_id_already, invalid_lock_token_provided, no_sdn_controller_id_specified, sdn_controller_does_not_exist

/cluster/sdn/controllers/{controller}

  • DELETE: generic (from the schema)
  • Access: /sdn/controllers: SDN.Allocate
  • Required: controller (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_controller_id_specified, sdn_controller_does_not_exist
  • GET: generic (from the schema)
  • Access: /sdn/controllers/{controller}: SDN.Allocate
  • Required: controller (+2 optional)
  • Errors: no_sdn_controller_id_specified, sdn_controller_does_not_exist
  • PUT: generic (from the schema)
  • Access: /sdn/controllers: SDN.Allocate
  • Required: controller (+19 optional)
  • Errors: invalid_lock_token_provided, no_sdn_controller_id_specified, sdn_controller_does_not_exist

/cluster/sdn/dns

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: no_sdn_dns_id_specified, sdn_dns_does_not_exist
  • POST: generic (from the schema)
  • Access: /sdn/dns: SDN.Allocate
  • Required: dns, key, type, url (+5 optional)
  • Errors: sdn_dns_object_id_already, invalid_lock_token_provided, no_sdn_dns_id_specified, sdn_dns_does_not_exist

/cluster/sdn/dns/{dns}

  • DELETE: generic (from the schema)
  • Access: /sdn/dns: SDN.Allocate
  • Required: dns (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_dns_id_specified, sdn_dns_does_not_exist
  • GET: generic (from the schema)
  • Access: /sdn/dns/{dns}: SDN.Allocate
  • Required: dns
  • Errors: no_sdn_dns_id_specified, sdn_dns_does_not_exist
  • PUT: generic (from the schema)
  • Access: /sdn/dns: SDN.Allocate
  • Required: dns (+8 optional)
  • Errors: invalid_lock_token_provided, no_sdn_dns_id_specified, sdn_dns_does_not_exist

/cluster/sdn/dry-run

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • Errors: uplink_id_already_defined

/cluster/sdn/fabrics

  • GET: generic (from the schema)
  • Access: /sdn/fabrics: SDN.Audit
  • Required: none

/cluster/sdn/fabrics/all

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)

/cluster/sdn/fabrics/fabric

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • POST: generic (from the schema)
  • Access: /sdn/fabrics: SDN.Allocate
  • Required: id, protocol, redistribute (+9 optional)
  • Errors: cannot_add_bgp_fabric_while, invalid_lock_token_provided

/cluster/sdn/fabrics/fabric/{id}

  • DELETE: generic (from the schema)
  • Access: /sdn/fabrics/{id}: SDN.Allocate
  • Required: id
  • Errors: permission_check_failed_missing_sys, fabric_still_used_evpn_controller, fabric_still_used_vxlan_zone, invalid_lock_token_provided
  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{id}: SDN.Audit or SDN.Allocate
  • Required: id
  • PUT: generic (from the schema)
  • Access: /sdn/fabrics/{id}: SDN.Allocate
  • Required: delete, id, protocol, redistribute (+9 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/fabrics/node

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)

/cluster/sdn/fabrics/node/{fabric_id}

  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{fabric_id}: SDN.Audit
  • Required: fabric_id (+2 optional)
  • POST: generic (from the schema)
  • Access: (/sdn/fabrics/{fabric_id}: SDN.Allocate and /nodes/{node_id}: Sys.Modify)
  • Required: fabric_id, interfaces, node_id, protocol (+9 optional)
  • Errors: could_not_save_private_key, invalid_lock_token_provided

/cluster/sdn/fabrics/node/{fabric_id}/{node_id}

  • DELETE: generic (from the schema)
  • Access: (/sdn/fabrics/{fabric_id}: SDN.Allocate and /nodes/{node_id}: Sys.Modify)
  • Required: fabric_id, node_id
  • Errors: invalid_lock_token_provided
  • GET: generic (from the schema)
  • Access: (/sdn/fabrics/{fabric_id}: SDN.Audit or SDN.Allocate and /nodes/{node_id}: Sys.Audit or Sys.Modify)
  • Required: fabric_id, node_id
  • PUT: generic (from the schema)
  • Access: (/sdn/fabrics/{fabric_id}: SDN.Allocate and /nodes/{node_id}: Sys.Modify)
  • Required: delete, fabric_id, interfaces, node_id, protocol (+9 optional)
  • Errors: cannot_change_role_existing_wireguard, could_not_save_private_key, invalid_lock_token_provided

/cluster/sdn/ipams

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: no_sdn_ipam_id_specified, sdn_ipam_does_not_exist
  • POST: generic (from the schema)
  • Access: /sdn/ipams: SDN.Allocate
  • Required: ipam, type (+5 optional)
  • Errors: sdn_ipam_object_id_already, invalid_lock_token_provided, no_sdn_ipam_id_specified, sdn_ipam_does_not_exist

/cluster/sdn/ipams/{ipam}

  • DELETE: generic (from the schema)
  • Access: /sdn/ipams: SDN.Allocate
  • Required: ipam (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_ipam_id_specified, sdn_ipam_does_not_exist
  • GET: generic (from the schema)
  • Access: /sdn/ipams/{ipam}: SDN.Allocate
  • Required: ipam
  • Errors: no_sdn_ipam_id_specified, sdn_ipam_does_not_exist
  • PUT: generic (from the schema)
  • Access: /sdn/ipams: SDN.Allocate
  • Required: ipam (+7 optional)
  • Errors: invalid_lock_token_provided, no_sdn_ipam_id_specified, sdn_ipam_does_not_exist

/cluster/sdn/ipams/{ipam}/status

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: ipam
  • Errors: currently_only_pve_ipam_supported, found_invalid_cidr_ipam, no_sdn_zone_id_specified, sdn_zone_does_not_exist, no_sdn_vnet_id_specified, sdn_vnet_does_not_exist

/cluster/sdn/lock

  • DELETE: generic (from the schema)
  • Access: /sdn: SDN.Allocate
  • Required: none (+2 optional)
  • Errors: invalid_lock_token_provided
  • POST: generic (from the schema)
  • Access: /sdn: SDN.Allocate
  • Required: none (+1 optional)
  • Errors: configuration_has_pending_changes, invalid_lock_token_provided

/cluster/sdn/prefix-lists

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+3 optional)
  • POST: generic (from the schema)
  • Access: /sdn/prefix-lists: SDN.Allocate
  • Required: id (+3 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/prefix-lists/{id}

  • DELETE: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Allocate
  • Required: id (+1 optional)
  • Errors: invalid_lock_token_provided, prefix_list_still_referenced_fabric, prefix_list_still_referenced_route
  • GET: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Audit
  • Required: id
  • Errors: param_id_doesn_t_exist
  • PUT: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Allocate
  • Required: id (+4 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/prefix-lists/{id}/entries

  • GET: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Audit
  • Required: id
  • POST: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Allocate
  • Required: action, id, prefix (+4 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/prefix-lists/{id}/entries/{url_seq}

  • DELETE: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Allocate
  • Required: id (+1 optional)
  • Errors: invalid_lock_token_provided
  • GET: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Audit
  • Required: id
  • Errors: param_id_entry_prefix_list
  • PUT: generic (from the schema)
  • Access: /sdn/prefix-lists/{id}: SDN.Allocate
  • Required: none (+8 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/rollback

  • POST: generic (from the schema)
  • Access: /sdn: SDN.Allocate
  • Required: none (+2 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/route-maps

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+1 optional)

/cluster/sdn/route-maps/entries

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • POST: generic (from the schema)
  • Access: /sdn/route-maps: SDN.Allocate
  • Required: action, order, route-map-id (+6 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/route-maps/entries/{route-map-id}

  • GET: generic (from the schema)
  • Access: /sdn/route-maps/{route-map-id}: SDN.Audit or SDN.Allocate
  • Required: route-map-id (+2 optional)

/cluster/sdn/route-maps/entries/{route-map-id}/entry/{order}

  • DELETE: generic (from the schema)
  • Access: /sdn/route-maps/{route-map-id}: SDN.Allocate
  • Required: order, route-map-id (+1 optional)
  • Errors: invalid_lock_token_provided, route_map_still_referenced_controller, route_map_still_referenced_fabric
  • GET: generic (from the schema)
  • Access: /sdn/route-maps/{route-map-id}: SDN.Audit or SDN.Allocate
  • Required: order, route-map-id
  • Errors: param_route_map_id_doesn
  • PUT: generic (from the schema)
  • Access: /sdn/route-maps/{route-map-id}: SDN.Allocate
  • Required: order, route-map-id (+8 optional)
  • Errors: invalid_lock_token_provided

/cluster/sdn/vnets

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • Errors: no_sdn_vnet_id_specified, sdn_vnet_does_not_exist
  • POST: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Allocate
  • Required: vnet, zone (+6 optional)
  • Errors: sdn_vnet_object_id_already, invalid_lock_token_provided, no_sdn_vnet_id_specified, sdn_vnet_does_not_exist, no_sdn_zone_id_specified, sdn_zone_does_not_exist, param_vlanaware_vlanaware_vnet_not

/cluster/sdn/vnets/{vnet}

  • DELETE: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_vnet_id_specified, sdn_vnet_does_not_exist, param_vnet_can_t_delete
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+2 optional)
  • Errors: no_sdn_vnet_id_specified, sdn_vnet_does_not_exist
  • PUT: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+8 optional)
  • Errors: param_zone_cannot_delete_zone, param_zone_can_t_change, invalid_lock_token_provided, no_sdn_zone_id_specified, sdn_zone_does_not_exist, param_vlanaware_vlanaware_vnet_not, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist

/cluster/sdn/vnets/{vnet}/firewall

  • GET: generic (from the schema)
  • Access: root only
  • Required: vnet

/cluster/sdn/vnets/{vnet}/firewall/options

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet
  • Errors: invalid_vnet_specified
  • PUT: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+5 optional)
  • Errors: param_delete_no_such_option, invalid_vnet_specified, can_t_lock_vnet_firewall

/cluster/sdn/vnets/{vnet}/firewall/rules

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet
  • Errors: implement_subclass
  • POST: generic (from the schema)
  • Access: any logged-in user
  • Required: action, type, vnet (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/sdn/vnets/{vnet}/firewall/rules/{pos}

  • DELETE: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/cluster/sdn/vnets/{vnet}/ips

  • DELETE: generic (from the schema)
  • Access: /sdn/zones/{zone}/{vnet}: SDN.Allocate
  • Required: ip, vnet, zone (+1 optional)
  • POST: generic (from the schema)
  • Access: /sdn/zones/{zone}/{vnet}: SDN.Allocate
  • Required: ip, vnet, zone (+1 optional)
  • PUT: generic (from the schema)
  • Access: /sdn/zones/{zone}/{vnet}: SDN.Allocate
  • Required: ip, vnet, zone (+2 optional)

/cluster/sdn/vnets/{vnet}/subnets

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: vnet (+2 optional)
  • Errors: no_sdn_subnet_id_specified, sdn_subnet_does_not_exist
  • POST: generic (from the schema)
  • Access: any logged-in user
  • Required: subnet, type, vnet (+6 optional)
  • Errors: sdn_subnet_object_id_already, invalid_lock_token_provided, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist, param_vnet_don_t_exist, param_vnet_you_can_t, param_gateway_not_subnet, param_dhcp_range_start_address, param_dhcp_range_start_address_2, param_dhcp_range_end_address, param_dhcp_range_end_address_2, param_dhcp_range_start_address_3, param_dhcp_range_start_address_4, param_dhcp_range_end_address_3, param_dhcp_range_dhcp_ranges

/cluster/sdn/vnets/{vnet}/subnets/{subnet}

  • DELETE: generic (from the schema)
  • Access: any logged-in user
  • Required: subnet, vnet (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: subnet, vnet (+2 optional)
  • Errors: param_vnet_wrong_vnet, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist
  • PUT: generic (from the schema)
  • Access: any logged-in user
  • Required: subnet (+9 optional)
  • Errors: invalid_lock_token_provided, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist, param_vnet_don_t_exist, param_vnet_you_can_t, param_gateway_not_subnet, param_dhcp_range_start_address, param_dhcp_range_start_address_2, param_dhcp_range_end_address, param_dhcp_range_end_address_2, param_dhcp_range_start_address_3, param_dhcp_range_start_address_4, param_dhcp_range_end_address_3, param_dhcp_range_dhcp_ranges

/cluster/sdn/zones

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none (+3 optional)
  • Errors: no_sdn_zone_id_specified, sdn_zone_does_not_exist
  • POST: generic (from the schema)
  • Access: /sdn/zones: SDN.Allocate
  • Required: type, zone (+26 optional)
  • Errors: sdn_zone_object_id_already, param_dns_don_t_exist, param_reversedns_don_t_exist, param_dnszone_missing_dns_server, param_ipam_not_existing, invalid_lock_token_provided, no_sdn_zone_id_specified, sdn_zone_does_not_exist

/cluster/sdn/zones/{zone}

  • DELETE: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Allocate
  • Required: zone (+1 optional)
  • Errors: invalid_lock_token_provided, no_sdn_zone_id_specified, sdn_zone_does_not_exist
  • GET: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Allocate
  • Required: zone (+2 optional)
  • Errors: no_sdn_zone_id_specified, sdn_zone_does_not_exist
  • PUT: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Allocate
  • Required: zone (+28 optional)
  • Errors: param_ipam_can_t_change, param_dns_don_t_exist, param_reversedns_don_t_exist, param_dnszone_missing_dns_server, param_ipam_not_existing, invalid_lock_token_provided, no_sdn_zone_id_specified, sdn_zone_does_not_exist, no_sdn_subnet_id_specified, sdn_subnet_does_not_exist

/cluster/status

  • GET: stateful (hand-written)
  • Access: /: Sys.Audit
  • Required: none

/cluster/tasks

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: none

nodes

/nodes

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none

/nodes/{node}

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/aplinfo

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node
  • POST: generic (from the schema), starts a task
  • Access: /storage/{storage}: Datastore.AllocateTemplate
  • Required: node, storage, template
  • Errors: param_template_no_such_template, unknown_template_type, storage_does_not_support_templates, storage_disabled, no_storage_id_specified, storage_does_not_exist, storage_not_available

/nodes/{node}/apt

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/apt/changelog

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: name, node (+1 optional)

/nodes/{node}/apt/repositories

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: index, node, path (+2 optional)
  • PUT: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: handle, node (+1 optional)

/nodes/{node}/apt/update

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node
  • Errors: unable_initialize_aptpkg_cache
  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+2 optional)
  • Errors in the task: unable_initialize_aptpkg_cache

/nodes/{node}/apt/versions

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • Errors: unable_initialize_aptpkg_cache

/nodes/{node}/capabilities

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/capabilities/qemu

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/capabilities/qemu/cpu

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)

/nodes/{node}/capabilities/qemu/cpu-flags

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+2 optional)

/nodes/{node}/capabilities/qemu/machines

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)
  • Errors: could_not_load_supported_machine

/nodes/{node}/capabilities/qemu/migration

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node

/nodes/{node}/ceph

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node

/nodes/{node}/ceph/cfg

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/ceph/cfg/db

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/cfg/raw

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: no_such_ceph_config, binary_not_installed

/nodes/{node}/ceph/cfg/value

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: config-keys, node
  • Errors: binary_not_installed

/nodes/{node}/ceph/cmd-safety

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: action, id, node, service
  • Errors: service_does_not_support_action, binary_not_installed

/nodes/{node}/ceph/crush

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/fs

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/fs/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+2 optional)
  • Errors: no_such_cephfs, binary_not_installed
  • Errors in the task: storage_not_disabled_make_sure, failed_remove_some_storages_check
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+3 optional)
  • Errors: ceph_pools_already_exist, ceph_fs_already_exists, no_running_metadata_server_mds, no_standby_metadata_server_mds, ceph_not_fully_configured_missing, storage_id_already_defined, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: need_mds_add_storage_but, adding_storage_cephfs_failed_check

/nodes/{node}/ceph/init

  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node (+6 optional)
  • Errors: ceph_nautilus_required_please_run, binary_not_installed, no_such_ceph_config, file_already_exists_not_symlink, unable_create_symlink

/nodes/{node}/ceph/log

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Syslog
  • Required: node (+2 optional)
  • Errors: binary_not_installed

/nodes/{node}/ceph/mds

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/mds/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node
  • Errors: binary_not_installed
  • Errors in the task: no_such_ceph_config
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+2 optional)
  • Errors: id_mds_cannot_start_number, binary_not_installed
  • Errors in the task: mds_already_referenced_ceph_config, no_such_ceph_config

/nodes/{node}/ceph/mgr

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/mgr/{id}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: id, node
  • Errors: binary_not_installed
  • Errors in the task: ceph_manager_directory_not_found, no_such_ceph_config
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+1 optional)
  • Errors: binary_not_installed, file_already_exists_not_symlink, unable_create_symlink
  • Errors in the task: no_such_ceph_config, ceph_manager_directory_already_exists

/nodes/{node}/ceph/mon

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/mon/{monid}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: monid, node
  • Errors: no_such_ceph_config, no_such_monitor_id, monitor_filesystem_does_not_exist, can_t_remove_last_monitor, binary_not_installed
  • Errors in the task: invalid_ip_string
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+2 optional)
  • Errors: could_not_connect_ceph_cluster, binary_not_installed, file_already_exists_not_symlink, unable_create_symlink, no_active_ip_found_requested, multiple_ips_ceph_public_network, specified_monitor_ip_not_configured, monitor_address_already_use, monitor_already_exists, invalid_ip_string
  • Errors in the task: monitor_filesystem_already_exist, no_such_ceph_config

/nodes/{node}/ceph/osd

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: no_tree_nodes_found, no_root, no_such_osd, binary_not_installed
  • POST: generic (from the schema), starts a task
  • Access: root only
  • Required: dev, node (+7 optional)
  • Errors: parameter_verification_failed, no_address_ceph_cluster_network, unable_get_device_info, device_already_use, unable_get_device_info_type, device_not_gpt_partitioned, device_already_use_has_no, invalid_size, smaller_than_requested_size_bytes, no_ceph_vg_found, vg_has_not_enough_free, cannot_use, file_already_exists_not_symlink, unable_create_symlink, binary_not_installed, missing_path, failed_get_absolute_path, got_unusual_device_path, disks_not_string_array_reference, no_such_ceph_config, device_already_used_volume_group, not_valid_block_device, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists, no_device_specified, found_multiple_pvs_entries_device
  • Errors in the task: couldn_t_get_size_device

/nodes/{node}/ceph/osd/{osdid}

  • DELETE: generic (from the schema), starts a task
  • Access: root only
  • Required: node, osdid (+1 optional)
  • Errors: osd_osd_does_not_belong, osd_use, osd_still_running_up, internal_error_duplicate_host_name, no_such_osd, binary_not_installed
  • Errors in the task: invalid_dev, invalid_path, no_such_ceph_config, error_detecting_block_device, partition_does_not_exist, failed_get_partition_number, partition_number_invalid, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists, couldn_t_get_size_device
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, osdid

/nodes/{node}/ceph/osd/{osdid}/in

  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node, osdid
  • Errors: no_such_osd, binary_not_installed

/nodes/{node}/ceph/osd/{osdid}/lv-info

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node, osdid (+1 optional)
  • Errors: got_unexpected_data_ceph_volume, osd_not_found_ceph_volume, volume_type_not_found_osd, got_unexpected_data_lvs, binary_not_installed

/nodes/{node}/ceph/osd/{osdid}/metadata

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node, osdid
  • Errors: osd_does_not_exists_host, binary_not_installed

/nodes/{node}/ceph/osd/{osdid}/out

  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node, osdid
  • Errors: no_such_osd, binary_not_installed

/nodes/{node}/ceph/osd/{osdid}/scrub

  • POST: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node, osdid (+1 optional)
  • Errors: no_such_osd, binary_not_installed

/nodes/{node}/ceph/pool

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+11 optional)
  • Errors: pool_name_contains_characters_which, ceph_not_fully_configured_missing, erasure_code_profile_does_not
  • Errors in the task: could_not_create_erasure_code, adding_pve_storage_ceph_pool, no_such_ceph_config, could_not_set

/nodes/{node}/ceph/pool/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+3 optional)
  • Errors: binary_not_installed
  • Errors in the task: ceph_pool_still_use_storage, failed_remove_some_storages_check, storage_disabled
  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: name, node
  • PUT: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+9 optional)
  • Errors: ceph_not_fully_configured_missing
  • Errors in the task: could_not_set

/nodes/{node}/ceph/pool/{name}/status

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: name, node (+1 optional)
  • Errors: binary_not_installed

/nodes/{node}/ceph/releases

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: internal_error_got_multiple_ceph, internal_error_got_no_ceph

/nodes/{node}/ceph/restart

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+1 optional)
  • Errors: no_configuration, binary_not_installed

/nodes/{node}/ceph/restart-bulk

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node, service-type (+6 optional)
  • Errors: no_ceph_configuration, binary_not_installed
  • Errors in the task: could_not_evaluate_ceph_health, ceph_cluster_has_blocking_health, ceph_cluster_has_blocking_health_2, no_resumable_bulk_restart_state, resumable_bulk_restart_state_already, could_not_determine_local_ceph, another_bulk_restart_progressed_past, ceph_reports_blocking_health_err, ceph_reports_not_safe_stop, get_daemons_only_supports_type, filter_outdated_daemons_local_version, could_not_fetch_metadata_outdated, could_not_fetch_metadata_unexpected, rolling_restart_finished_but_failed, another_ceph_bulk_restart_already, daemon_did_not_come_up, received_sigterm_aborting_bulk_restart, received_sigint_aborting_bulk_restart, received_sighup_aborting_bulk_restart, unknown_daemon_type, could_not_read_osd_map

/nodes/{node}/ceph/rules

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/start

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+1 optional)
  • Errors: no_configuration, binary_not_installed

/nodes/{node}/ceph/status

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Datastore.Audit
  • Required: node
  • Errors: binary_not_installed

/nodes/{node}/ceph/stop

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: node (+1 optional)
  • Errors: no_configuration, binary_not_installed

/nodes/{node}/certificates

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/certificates/acme

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/certificates/acme/certificate

  • DELETE: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node
  • Errors: acme_domain_list_configuration_missing, duplicate_domain_acme_config_properties, duplicate_domain_acme_config_properties_2, plugin_domain_not_found
  • Errors in the task: acme_account_config_file_does, revoke_request_ca_failed
  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+1 optional)
  • Errors: param_force_custom_certificate_exists, acme_domain_list_configuration_missing, duplicate_domain_acme_config_properties, duplicate_domain_acme_config_properties_2, plugin_domain_not_found
  • Errors in the task: acme_account_config_file_does, no_config_domain, order_status
  • PUT: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+1 optional)
  • Errors: no_current_custom_certificate_found, param_force_certificate_does_not, acme_domain_list_configuration_missing, duplicate_domain_acme_config_properties, duplicate_domain_acme_config_properties_2, plugin_domain_not_found
  • Errors in the task: acme_account_config_file_does, no_config_domain, order_status

/nodes/{node}/certificates/custom

  • DELETE: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+1 optional)
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: certificates, node (+3 optional)
  • Errors: param_key_attempted_upload_custom

/nodes/{node}/certificates/info

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/config

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node (+1 optional)
  • PUT: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node (+9 optional)
  • Errors: duplicate_domain_acme_config_properties, duplicate_domain_acme_config_properties_2, plugin_domain_not_found, detected_invalid_newline_inside_property

/nodes/{node}/disks

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/disks/directory

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: device, name, node (+2 optional)
  • Errors: path_already_mounted, systemd_mount_unit_already_exists, missing_path, failed_get_absolute_path, got_unusual_device_path, device_already_use, storage_config_exists_but_no, storage_id_already_exists, option_not_configured_storage_expected, option_does_not_match_existing, not_valid_block_device, not_valid_local_disk, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: could_not_get_uuid_device, invalid_property

/nodes/{node}/disks/directory/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+2 optional)
  • Errors in the task: unable_obtain_information_disk, cannot_remove, config_cleanup_failed, missing_path, failed_get_absolute_path, got_unusual_device_path, disks_not_string_array_reference, couldn_t_get_size_device, not_valid_block_device, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists

/nodes/{node}/disks/initgpt

  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: disk, node (+1 optional)
  • Errors: partition, disk_already_use, missing_path, failed_get_absolute_path, got_unusual_device_path, not_valid_local_disk, not_valid_block_device, disks_not_string_array_reference
  • Errors in the task: disk_already_use_2

/nodes/{node}/disks/list

  • GET: generic (from the schema)
  • Access: (/: Sys.Audit or /nodes/{node}: Sys.Audit)
  • Required: node (+3 optional)
  • Errors: internal_error, disks_not_string_array_reference, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists

/nodes/{node}/disks/lvm

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: device, name, node (+1 optional)
  • Errors: missing_path, failed_get_absolute_path, got_unusual_device_path, device_already_use, storage_config_exists_but_no, storage_id_already_exists, option_not_configured_storage_expected, option_does_not_match_existing, not_valid_block_device, not_valid_local_disk, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: volume_group_name_already_exists, device_already_used_volume_group, no_device_specified, found_multiple_pvs_entries_device

/nodes/{node}/disks/lvm/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+2 optional)
  • Errors in the task: no_such_volume_group, cleanup_failed, config_cleanup_failed

/nodes/{node}/disks/lvmthin

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: device, name, node (+1 optional)
  • Errors: missing_path, failed_get_absolute_path, got_unusual_device_path, device_already_use, storage_config_exists_but_no, storage_id_already_exists, option_not_configured_storage_expected, option_does_not_match_existing, not_valid_block_device, not_valid_local_disk, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: volume_group_name_already_exists, device_too_small_thin_pool, device_already_used_volume_group, no_device_specified, found_multiple_pvs_entries_device

/nodes/{node}/disks/lvmthin/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node, volume-group (+2 optional)
  • Errors in the task: no_such_thin_pool, no_such_volume_group, volume_group_still_use, cleanup_failed, config_cleanup_failed

/nodes/{node}/disks/smart

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: disk, node (+1 optional)
  • Errors: missing_path, failed_get_absolute_path, got_unusual_device_path, not_valid_block_device

/nodes/{node}/disks/wipedisk

  • PUT: generic (from the schema), starts a task
  • Access: root only
  • Required: disk, node
  • Errors: disk_partition_mounted, disk_partition_has_holder, missing_path, failed_get_absolute_path, got_unusual_device_path, not_valid_block_device
  • Errors in the task: couldn_t_get_size_device

/nodes/{node}/disks/zfs

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node
  • Errors: zfsutils_linux_not_installed
  • POST: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: devices, name, node, raidlevel (+4 optional)
  • Errors: draid_config_set_without_using, pool_already_exists, raid_needs_even_number_disks, please_give_only_one_disk, needs_least_disks, least_disks_needed_current_draid, missing_path, failed_get_absolute_path, got_unusual_device_path, device_already_use, storage_config_exists_but_no, storage_id_already_exists, option_not_configured_storage_expected, option_does_not_match_existing, zfsutils_linux_not_installed, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists, not_valid_block_device, not_valid_local_disk, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/disks/zfs/{name}

  • DELETE: generic (from the schema), starts a task
  • Access: /: Sys.Modify
  • Required: name, node (+2 optional)
  • Errors in the task: unable_obtain_information_disk, cleanup_failed, config_cleanup_failed, missing_path, failed_get_absolute_path, got_unusual_device_path, disks_not_string_array_reference, not_valid_block_device, can_t_parse_parent_device, no_valid_block_device, block_device_does_not_exists
  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: name, node
  • Errors: zfsutils_linux_not_installed

/nodes/{node}/dns

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • PUT: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, search (+3 optional)

/nodes/{node}/execute

  • POST: generic (from the schema)
  • Access: root only
  • Required: commands, node

/nodes/{node}/firewall

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/firewall/log

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Syslog
  • Required: node (+4 optional)

/nodes/{node}/firewall/options

  • GET: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • PUT: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+21 optional)
  • Errors: param_delete_no_such_option

/nodes/{node}/firewall/rules

  • GET: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Modify
  • Required: action, node, type (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/firewall/rules/{pos}

  • DELETE: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/hardware

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/hardware/pci

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Sys.Modify
  • Required: node (+2 optional)

/nodes/{node}/hardware/pci/{pci-id-or-mapping}

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, pci-id-or-mapping

/nodes/{node}/hardware/pci/{pci-id-or-mapping}/mdev

  • GET: generic (from the schema)
  • Access: /: Sys.Audit or Sys.Modify
  • Required: node, pci-id-or-mapping

/nodes/{node}/hardware/usb

  • GET: generic (from the schema)
  • Access: /: Sys.Modify
  • Required: node

/nodes/{node}/hosts

  • GET: generic (from the schema)
  • Access: /: Sys.Audit
  • Required: node
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: data, node (+1 optional)

/nodes/{node}/journal

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Syslog
  • Required: node (+12 optional)
  • Errors: could_not_start_mini_journalreader

/nodes/{node}/lxc

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node
  • Errors: parse_volume_unknown_type
  • POST: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, ostemplate, vmid (+43 optional)
  • Errors: can_t_overwrite_running, permission_check_failed, pipe_requires_cli_environment, pipe_can_only_used_restore, restore_pipe_requires_rootfs_parameter, param_storage_storage_does_not, mount_points_configured_but_rootfs, only_root_can_pass_arbitrary, configuration_file_does_not_exist, protection_mode_enabled, permission_check_failed_mount_point, permission_check_failed_configuring_device, permission_check_failed_changing_feature, permission_check_failed_changing_feature_2, permission_check_failed_changing_hookscript, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, storage_disabled, connection_check_storage_failed, storage_not_online, unable_delete_required_option, unable_delete_read_only_option, storage_does_not_allow_content, unable_modify_read_only_option, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed, path_not_defined_passthrough_device, parse_volume_unknown_type, permission_check_failed_sys_modify, no_storage_id_specified, storage_does_not_exist, storage_not_available, reverse_iteration_only_supported_default, unable_parse_volume_id, invalid_map_entry_id_also, not_snippets_directory, script_does_not_exist, script_not_executable, bridge_does_not_exist, unexpeted_error_unable_parse_mtu, path_has_defined
  • Errors in the task: no_lock_found_trying_remove, found_lock_trying_remove_lock

/nodes/{node}/lxc/{vmid}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Allocate
  • Required: node, vmid (+3 optional)
  • Errors: unable_remove_used_ha_resources, configuration_file_does_not_exist, protection_mode_enabled, locked, failed_open_s_command_socket, did_not_stop, base_volume_still_use_linked, failed_remove_config_file, reverse_iteration_only_supported_default
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/lxc/{vmid}/clone

  • POST: stateful (hand-written)
  • Access: (/vms/{vmid}: VM.Clone and (/vms/{newid}: VM.Allocate or /pool/{pool}: VM.Allocate))
  • Required: newid, node, vmid (+8 optional)
  • Errors: can_t_clone_non_shared, lost_create_config_lock_aborting, storage_disabled, no_storage_id_specified, storage_does_not_exist, configuration_file_does_not_exist, storage_not_available, unable_remove_used_ha_resources, failed_open_s_command_socket, did_not_stop, base_volume_still_use_linked, failed_remove_config_file, locked
  • Errors in the task: unexpected_state_change, clone_failed, no_lock_found_trying_remove, found_lock_trying_remove_lock, volume_deactivation_failed, failed_move_config_file

/nodes/{node}/lxc/{vmid}/config

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+2 optional)
  • Errors: param_snapshot_cannot_use_snapshot, snapshot_does_not_exist, configuration_file_does_not_exist
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Disk or VM.Config.CPU or VM.Config.Memory or VM.Config.Network or VM.Config.Options
  • Required: node, vmid (+35 optional)
  • Errors: no_options_specified, param_revert_unknown_option, param_revert_you_can_t, param_delete_unknown_option, param_delete_you_can_t, param_delete_you_can_t_2, cannot_add_non_replicatable_volume, param_value, configuration_file_does_not_exist, locked, permission_check_failed_mount_point, permission_check_failed_configuring_device, permission_check_failed_changing_feature, permission_check_failed_changing_feature_2, permission_check_failed_changing_hookscript, no_storage_id_specified, storage_does_not_exist, unable_delete_required_option, unable_delete_read_only_option, storage_does_not_allow_content, unable_modify_read_only_option, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed, path_not_defined_passthrough_device, missing_arch_internal_error, missing_ostype_internal_error, path_not_defined_passthrough_device_2, missing_rootfs_configuration, mtu_size_bigger_than_bridge_2, slaac_not_supported_host_managed_2, parse_volume_unknown_type, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, permission_check_failed_sys_modify, reverse_iteration_only_supported_default, unable_parse_volume_id, protection_mode_enabled, invalid_map_entry_id_also, not_snippets_directory, script_does_not_exist, script_not_executable, bridge_does_not_exist, unexpeted_error_unable_parse_mtu, path_has_defined, mknod_feature_requested_but_kernel

/nodes/{node}/lxc/{vmid}/feature

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: feature, node, vmid (+1 optional)
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist

/nodes/{node}/lxc/{vmid}/firewall

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid

/nodes/{node}/lxc/{vmid}/firewall/aliases

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+1 optional)
  • Errors: param_name_alias_already_exists, implement_subclass

/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: name, node, vmid
  • Errors: param_name_no_such_alias, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+3 optional)
  • Errors: param_name_no_such_alias, param_name_alias_already_exists, implement_subclass

/nodes/{node}/lxc/{vmid}/firewall/ipset

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+3 optional)
  • Errors: param_name_ipset_does_not, param_name_ipset_does_already, param_name_ipset_already_exists, implement_subclass

/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+1 optional)
  • Errors: ipset_not_empty, implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: name, node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+2 optional)
  • Errors: param_cidr_zero_prefix_alias, param_cidr_address_already_exists, param_cidr_zero_prefix_not, implement_subclass, no_such_alias, value_does_not_look_like

/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: cidr, name, node, vmid
  • Errors: param_cidr_no_such_ip, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+3 optional)
  • Errors: param_cidr_no_such_ip, implement_subclass

/nodes/{node}/lxc/{vmid}/firewall/log

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+4 optional)

/nodes/{node}/lxc/{vmid}/firewall/options

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+12 optional)
  • Errors: param_delete_no_such_option, can_t_lock_firewall_config

/nodes/{node}/lxc/{vmid}/firewall/refs

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+1 optional)

/nodes/{node}/lxc/{vmid}/firewall/rules

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: action, node, type, vmid (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/lxc/{vmid}/interfaces

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid

/nodes/{node}/lxc/{vmid}/migrate

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist, locked
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, target, vmid (+5 optional)
  • Errors: param_target_target_local, can_t_migrate_running_without, param_target_storage_failed_parse, configuration_file_does_not_exist, storage_does_not_support_rootdirs, storage_disabled, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: migration_aborted, migration_problems, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network

/nodes/{node}/lxc/{vmid}/move_volume

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Config.Disk
  • Required: node, vmid, volume (+7 optional)
  • Errors: either_set_storage_target_vmid, cannot_move_volumes_running, cannot_move_volume_only_configured, you_can_t_move_volume, cannot_move_rootfs, moving_unused_volume_used_one, could_not_find, could_not_find_2, both_containers_need_same, can_t_move_volumes_template, volume_does_not_exist, target_volume_key_already_use, volume_has_no_associated_image, cannot_move_volume_used_snapshot, storage_does_not_support_moving, cannot_move_bindmount_device_mount, cannot_move_use_volume_while, cannot_move_volume_storage_replicated, param_target_vmid, configuration_file_does_not_exist, locked, parse_volume_unknown_type, protection_mode_enabled, invalid_size, failed_parse_mount_point_idmap, no_storage_id_specified, storage_does_not_exist, unable_parse_volume_id
  • Errors in the task: no_source_volid_provided, no_target_vmid_target_volname, unable_delete_required_option, unable_delete_read_only_option, storage_does_not_allow_content, unable_modify_read_only_option, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed, path_not_defined_passthrough_device, missing_arch_internal_error, missing_ostype_internal_error, path_not_defined_passthrough_device_2, missing_rootfs_configuration, mtu_size_bigger_than_bridge_2, slaac_not_supported_host_managed_2, connection_check_storage_failed, storage_not_online, invalid_map_entry_id_also, not_snippets_directory, script_does_not_exist, script_not_executable, bridge_does_not_exist, unexpeted_error_unable_parse_mtu, path_has_defined, mknod_feature_requested_but_kernel

/nodes/{node}/lxc/{vmid}/mtunnel

  • POST: generic (from the schema)
  • Access: (/vms/{vmid}: VM.Allocate and /: Sys.Incoming)
  • Required: node, vmid (+2 optional)
  • Errors: param_needs_localhost_local_hostname, param_vmid_unable_create_empty, storage_does_not_support_rootdirs, bridge_does_not_exist, unexpeted_error_unable_parse_mtu, storage_disabled, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: encountered_wrong_lock_aborting_mtunnel, not_allowed_generate_ticket_unknown, failed_resolve_user_www_data, exiting_mtunnel, mtunnel_exited_unexpectedly, configuration_file_does_not_exist, internal_error_running_but_mount, got_strange_filename, no_lock_found_trying_remove, found_lock_trying_remove_lock, disk_import_already_running_pid, no_disk_import_running, failed_open_writing, failed_open_s_command_socket, did_not_stop, base_volume_still_use_linked, can_t_resize_mount_point, could_not_determine_current_size, unable_shrink_disk_size, disk_already_specified_size, resize_file_device_not_possible, unable_parse_volume_id, no_matching_import_export_format, failed_spawn_disk_import_child, failed_read_readyness_disk_import, missing_arch_internal_error, missing_ostype_internal_error, path_not_defined_passthrough_device, missing_rootfs_configuration, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed, reverse_iteration_only_supported_default, failed_remove_config_file

/nodes/{node}/lxc/{vmid}/mtunnelwebsocket

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, socket, ticket, vmid
  • Errors: param_needs_localhost_local_hostname, configuration_file_does_not_exist

/nodes/{node}/lxc/{vmid}/pending

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/lxc/{vmid}/remote_migrate

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, target-bridge, target-endpoint, target-storage, vmid (+6 optional)
  • Errors: can_t_migrate_running_without, param_vmid_cannot_remote_migrate, param_target_storage_failed_parse, param_target_bridge_failed_parse, remote_migration_requires_explicit_storage, couldn_t_determine_endpoint_s, configuration_file_does_not_exist, locked
  • Errors in the task: migration_aborted, migration_problems, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network

/nodes/{node}/lxc/{vmid}/resize

  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Disk
  • Required: disk, node, size, vmid (+1 optional)
  • Errors: invalid_size_string, no_options_specified, can_t_resize_mount_point, could_not_determine_current_size, unable_shrink_disk_size, disk_already_specified_size, internal_error_running_but_mount, configuration_file_does_not_exist, locked, permission_check_failed_mount_point, permission_check_failed_configuring_device, permission_check_failed_changing_feature, permission_check_failed_changing_feature_2, permission_check_failed_changing_hookscript, parse_volume_unknown_type, resize_file_device_not_possible, unable_parse_volume_id, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, permission_check_failed_sys_modify, invalid_size, failed_parse_mount_point_idmap, no_storage_id_specified, storage_does_not_exist, internal_error_hints_not_valid

/nodes/{node}/lxc/{vmid}/rrd

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: ds, node, timeframe, vmid (+1 optional)
  • Errors: fixme_no_color_definition, rrd_error

/nodes/{node}/lxc/{vmid}/rrddata

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, timeframe, vmid (+1 optional)
  • Errors: rrd_error

/nodes/{node}/lxc/{vmid}/snapshot

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+1 optional)
  • Errors: unable_use_snapshot_name_current, unable_use_snapshot_name_vzdump
  • Errors in the task: you_can_t_take_snapshot, snapshot_name_already_used, snapshot_feature_not_available, configuration_file_does_not_exist, missing_snapshot_lock, snapshot_does_not_exist, wrong_snapshot_state

/nodes/{node}/lxc/{vmid}/snapshot/{snapname}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+1 optional)
  • Errors: snapshot_does_not_exist, encountered_invalid_lock_expected, you_can_t_delete_snapshot, configuration_file_does_not_exist, snapshot_needed_replication_job_run, too_many_unused_volumes_please
  • Errors in the task: failed_obtain_guest_migration_lock
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, snapname, vmid

/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/config

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Snapshot or VM.Snapshot.Rollback or VM.Audit
  • Required: node, snapname, vmid
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+1 optional)
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist, locked

/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/rollback

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Snapshot or VM.Snapshot.Rollback
  • Required: node, snapname, vmid (+1 optional)
  • Errors in the task: you_can_t_rollback_if, snapshot_does_not_exist, unable_rollback_incomplete_snapshot_snapstate, unable_rollback_running, got_wrong_lock, configuration_file_does_not_exist, locked, too_many_unused_volumes_please

/nodes/{node}/lxc/{vmid}/spiceproxy

  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+1 optional)
  • Errors: not_running, configuration_file_does_not_exist, internal_error

/nodes/{node}/lxc/{vmid}/status

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/lxc/{vmid}/status/current

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist, parse_volume_unknown_type

/nodes/{node}/lxc/{vmid}/status/reboot

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+1 optional)
  • Errors: not_running
  • Errors in the task: failed_open_s_command_socket, did_not_stop, configuration_file_does_not_exist, failed_open_writing

/nodes/{node}/lxc/{vmid}/status/resume

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid
  • Errors: already_running

/nodes/{node}/lxc/{vmid}/status/shutdown

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+2 optional)
  • Errors: not_running
  • Errors in the task: configuration_file_does_not_exist, locked, failed_open_s_command_socket, did_not_stop

/nodes/{node}/lxc/{vmid}/status/start

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+2 optional)
  • Errors: param_skiplock_only_root_may, already_running
  • Errors in the task: you_can_t_start_if, quotas_not_supported_unprivileged_containers, configuration_file_does_not_exist, locked, failed_open_writing, reverse_iteration_only_supported_default, missing_arch_internal_error, missing_ostype_internal_error, path_not_defined_passthrough_device, missing_rootfs_configuration, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed

/nodes/{node}/lxc/{vmid}/status/stop

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+2 optional)
  • Errors: param_skiplock_only_root_may, not_running, param_overrule_shutdown_not_applicable
  • Errors in the task: configuration_file_does_not_exist, locked, failed_open_s_command_socket, did_not_stop

/nodes/{node}/lxc/{vmid}/status/suspend

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid
  • Errors: not_running
  • Errors in the task: configuration_file_does_not_exist, locked

/nodes/{node}/lxc/{vmid}/template

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Allocate
  • Required: node, vmid
  • Errors: unable_create_template_because_contains, you_can_t_convert_template, you_can_t_convert_template_2, configuration_file_does_not_exist, locked
  • Errors in the task: template_feature_not_available, missing_arch_internal_error, missing_ostype_internal_error, path_not_defined_passthrough_device, missing_rootfs_configuration, mtu_size_bigger_than_bridge, slaac_not_supported_host_managed, mknod_feature_requested_but_kernel, parse_volume_unknown_type, bridge_does_not_exist, unexpeted_error_unable_parse_mtu

/nodes/{node}/lxc/{vmid}/termproxy

  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid
  • Errors: internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network, configuration_file_does_not_exist, internal_error
  • Errors in the task: failed_create_pipe, failed_get_file_descriptor_flags, failed_remove_cloexec_flag_fd

/nodes/{node}/lxc/{vmid}/vncproxy

  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+3 optional)
  • Errors: internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network, configuration_file_does_not_exist, internal_error, generate_random_bytes_range_invalid, generate_random_bytes_range_invalid_2, generate_random_bytes_range_invalid_3, generate_random_bytes_range_min, generate_random_bytes_range_failed, generate_random_bytes_range_failed_2

/nodes/{node}/lxc/{vmid}/vncwebsocket

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, port, vmid, vncticket

/nodes/{node}/migrateall

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node, target (+4 optional)
  • Errors: permission_check_failed_migrate, param_target_target_local, either_max_workers_parameter_max
  • Errors in the task: no_migrations_worker_started

/nodes/{node}/netstat

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node

/nodes/{node}/network

  • DELETE: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)
  • Errors: no_sdn_vnet_id_specified, sdn_vnet_does_not_exist, no_sdn_zone_id_specified, sdn_zone_does_not_exist
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: iface, node, type (+26 optional)
  • Errors: param_iface_interface_already_exists, open_vswitch_not_installed_need, param_ovs_bridge_parameter_required, param_ovs_bridge_bridge_does, param_ovs_bridge_interface_no, param_bridge_vids_vlan_list, parameter_verification_failed, param_address_address_conflicts_cidr, param_netmask_netmask_conflicts_cidr, param_address_address_conflicts_cidr_2, param_netmask_netmask_conflicts_cidr_2, param_netmask_not_valid_subnet, param_address_not_valid_host, param_address_type_cannot_used
  • PUT: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+1 optional)
  • Errors: you_need_ifupdown_reload_network, incompatible_ifupdown_package_version_did
  • Errors in the task: no_network_config_supplied, could_not_run_before_regenerate, could_not_find_dhcp_plugin, could_not_run_before_configure, etc_frr_daemons_file_does, not_sdn_managed

/nodes/{node}/network/{iface}

  • DELETE: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: iface, node
  • Errors: param_iface_interface_does_not
  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: iface, node
  • Errors: param_iface_interface_does_not
  • PUT: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: iface, node, type (+27 optional)
  • Errors: param_iface_interface_does_not, param_bridge_vids_vlan_list, param_address_address_conflicts_cidr, param_netmask_netmask_conflicts_cidr, param_address_address_conflicts_cidr_2, param_netmask_netmask_conflicts_cidr_2, parameter_verification_failed, param_netmask_not_valid_subnet, param_address_not_valid_host, param_address_type_cannot_used

/nodes/{node}/qemu

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)
  • Errors: configuration_file_does_not_exist
  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node, vmid (+91 optional)
  • Errors: permission_check_failed, parameter_verification_failed, pipe_requires_cli_environment, running, live_restore_only_compatible_backup, unknown_backup_archive_type, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, no_storage_id_specified_no, param_storage_storage_does_not, only_root_can_set_config, only_root_can_set_config_2, configuration_file_does_not_exist, protection_mode_enabled, live_restore_backup_provider_not, unable_create, got_unexpected_vtype, got_unexpected_backup_format, got_signal_abort, cannot_do_live_restore_template, no_storage_id_specified, storage_does_not_exist, can_t_find_file, unable_parse_format_import_volume, volume_unknown_import_format, volume_not_qemu_image_format, either_host_mapping_must_set, only_root_can_set_config_3, unable_find_configuration_file, unable_read_qemu_server_conf, found_no_device_mapping_information, seek_failed, error_couldn_t_determine_archive, cannot_pass_along_options_when, error_file_does_not_look, no_server_given, no_datastore_given, no_lock_found_trying_remove, found_lock_trying_remove_lock, invalid_json_data
  • Errors in the task: disk_not_support_live_restoring, mapping_contains_disk_which_does, missing_path_mapping, missing_volid_mapping, missing_format_mapping, invalid_format_mapping, live_restore_failed, internal_error_cannot_check_version, unable_parse_drive_interface, generate_drive_blockdev_called_without, generate_drive_blockdev_called_none, quit_powerdown_failed_got_timeout, quit_powerdown_failed

/nodes/{node}/qemu/{vmid}

  • DELETE: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Allocate
  • Required: node, vmid (+3 optional)
  • Errors: param_skiplock_only_root_may, unable_remove_used_ha_resources, running_destroy_failed, configuration_file_does_not_exist, protection_mode_enabled, unable_find_configuration_file
  • Errors in the task: base_volume_still_use_linked, failed_remove_config_file, locked, reverse_iteration_only_supported_default, unable_parse_volume
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid
  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.GuestAgent.Unrestricted or VM.GuestAgent.Unrestricted
  • Required: command, node, vmid

/nodes/{node}/qemu/{vmid}/agent/exec

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Unrestricted
  • Required: command, node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/agent/exec-status

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Unrestricted
  • Required: node, pid, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/agent/file-read

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.FileRead or VM.GuestAgent.Unrestricted
  • Required: file, node, vmid (+3 optional)
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/agent/file-write

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.FileWrite or VM.GuestAgent.Unrestricted
  • Required: content, file, node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/agent/fsfreeze-freeze

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.FileSystemMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/fsfreeze-status

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.FileSystemMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/fsfreeze-thaw

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.FileSystemMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/fstrim

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.FileSystemMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-fsinfo

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-host-name

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-memory-block-info

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-memory-blocks

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-osinfo

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-time

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-timezone

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-users

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/get-vcpus

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/info

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/network-get-interfaces

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/ping

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Audit or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/set-user-password

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.GuestAgent.Unrestricted
  • Required: node, password, username, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/agent/shutdown

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/suspend-disk

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/suspend-hybrid

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/agent/suspend-ram

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt or VM.GuestAgent.Unrestricted
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/clone

  • POST: generic (from the schema), starts a task
  • Access: (/vms/{vmid}: VM.Clone and (/vms/{newid}: VM.Allocate or /pool/{pool}: VM.Allocate))
  • Required: newid, node, vmid (+9 optional)
  • Errors: param_storage_storage_does_not, can_t_clone_non_shared, unexpected_state_change, snapshot_does_not_exist, parameter_storage_not_allowed_linked, parameter_format_not_allowed_linked, can_t_clone_uses_local, unable_create_config_file_already, cannot_clone_tpm_state_while, unable_parse_drive_options, clone_failed, storage_disabled, configuration_file_does_not_exist, locked, only_root_can_set_config, either_host_mapping_must_set, only_root_can_set_config_2, unable_find_configuration_file, no_storage_id_specified, storage_does_not_exist, storage_not_available

/nodes/{node}/qemu/{vmid}/cloudinit

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist
  • PUT: generic (from the schema)
  • Access: /vms/{vmid}: VM.Config.Cloudinit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist, locked

/nodes/{node}/qemu/{vmid}/cloudinit/dump

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, type, vmid
  • Errors: configuration_file_does_not_exist, network_interface_has_no_mac

/nodes/{node}/qemu/{vmid}/config

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+2 optional)
  • Errors: param_snapshot_cannot_use_snapshot, snapshot_does_not_exist, configuration_file_does_not_exist
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Disk or VM.Config.CDROM or VM.Config.CPU or VM.Config.Memory or VM.Config.Network or VM.Config.HWType or VM.Config.Options or VM.Config.Cloudinit
  • Required: node, vmid (+88 optional)
  • Errors: param_skiplock_only_root_may, no_options_specified, param_revert_unknown_option, param_delete_you_can_t, param_delete_you_can_t_2, param_revert_you_can_t, param_delete_unknown_option, cannot_add_non_managed_pass, cannot_add_non_replicatable_volume, parameter_verification_failed, checksum_mismatch_file_change_other, balloon_value_too_large_must, only_root_can_delete_config, only_root_can_modify_config, invalid_bootorder_device_does_not, param_value, failed_update, no_storage_id_specified, storage_does_not_exist, only_root_can_set_config, no_storage_id_specified_no, param_storage_storage_does_not, configuration_file_does_not_exist, locked, protection_mode_enabled, unable_delete_volume_still_use, only_root_can_set_config_2, either_host_mapping_must_set, only_root_can_set_config_3, permission_check_failed_sys_modify, cannot_change_tpm_state_version, vga_type_not_compatible_vnc, use_intel_viommu_please_set, intel_viommu_supports_only_bits, cannot_set_aw_bits_if, unable_parse_volume_id, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, unable_parse_format_import_volume, volume_unknown_import_format, volume_not_qemu_image_format, base_volume_still_use_linked, unable_find_configuration_file, invalid_hotplug_feature, internal_error_cannot_check_version, can_t_unplug_bootdisk, can_t_unplug_device
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Disk or VM.Config.CDROM or VM.Config.CPU or VM.Config.Memory or VM.Config.Network or VM.Config.HWType or VM.Config.Options or VM.Config.Cloudinit
  • Required: node, vmid (+86 optional)
  • Errors: param_skiplock_only_root_may, no_options_specified, param_revert_unknown_option, param_delete_you_can_t, param_delete_you_can_t_2, param_revert_you_can_t, param_delete_unknown_option, cannot_add_non_managed_pass, cannot_add_non_replicatable_volume, parameter_verification_failed, checksum_mismatch_file_change_other, balloon_value_too_large_must, only_root_can_delete_config, only_root_can_modify_config, invalid_bootorder_device_does_not, param_value, failed_update, no_storage_id_specified, storage_does_not_exist, only_root_can_set_config, no_storage_id_specified_no, param_storage_storage_does_not, configuration_file_does_not_exist, locked, protection_mode_enabled, unable_delete_volume_still_use, only_root_can_set_config_2, either_host_mapping_must_set, only_root_can_set_config_3, permission_check_failed_sys_modify, cannot_change_tpm_state_version, vga_type_not_compatible_vnc, use_intel_viommu_please_set, intel_viommu_supports_only_bits, cannot_set_aw_bits_if

/nodes/{node}/qemu/{vmid}/dbus-vmstate

  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.Migrate
  • Required: action, node, vmid
  • Errors: param_needs_localhost_local_hostname, param_not_running_locally, unknown_action, must_running_locally, failed_start_dbus_vmstate_service

/nodes/{node}/qemu/{vmid}/feature

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: feature, node, vmid (+1 optional)
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist, unable_find_configuration_file, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/qemu/{vmid}/firewall

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid

/nodes/{node}/qemu/{vmid}/firewall/aliases

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+1 optional)
  • Errors: param_name_alias_already_exists, implement_subclass

/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: name, node, vmid
  • Errors: param_name_no_such_alias, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+3 optional)
  • Errors: param_name_no_such_alias, param_name_alias_already_exists, implement_subclass

/nodes/{node}/qemu/{vmid}/firewall/ipset

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+3 optional)
  • Errors: param_name_ipset_does_not, param_name_ipset_does_already, param_name_ipset_already_exists, implement_subclass

/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: name, node, vmid (+1 optional)
  • Errors: ipset_not_empty, implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: name, node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+2 optional)
  • Errors: param_cidr_zero_prefix_alias, param_cidr_address_already_exists, param_cidr_zero_prefix_not, implement_subclass, no_such_alias, value_does_not_look_like

/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+1 optional)
  • Errors: implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: cidr, name, node, vmid
  • Errors: param_cidr_no_such_ip, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: cidr, name, node, vmid (+3 optional)
  • Errors: param_cidr_no_such_ip, implement_subclass

/nodes/{node}/qemu/{vmid}/firewall/log

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+4 optional)

/nodes/{node}/qemu/{vmid}/firewall/options

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+12 optional)
  • Errors: param_delete_no_such_option, can_t_lock_firewall_config

/nodes/{node}/qemu/{vmid}/firewall/refs

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+1 optional)

/nodes/{node}/qemu/{vmid}/firewall/rules

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: implement_subclass
  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: action, node, type, vmid (+13 optional)
  • Errors: implement_subclass, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}

  • DELETE: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+2 optional)
  • Errors: no_rule_position, implement_subclass
  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid (+1 optional)
  • Errors: no_rule_position, implement_subclass
  • PUT: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Config.Network
  • Required: node, vmid (+17 optional)
  • Errors: no_rule_position, implement_subclass, param_delete_no_such_property, param_delete_unable_delete_required, unknown_rule_env, parameter_verification_failed, detected_mixed_ipv_ipv_addresses

/nodes/{node}/qemu/{vmid}/migrate

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist, locked, uses_local_resources, unable_find_configuration_file, cannot_live_migrate_snapshot_ram, internal_error_cannot_check_version, no_storage_id_specified, storage_does_not_exist
  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, target, vmid (+8 optional)
  • Errors: param_target_target_local, param_force_only_root_may, param_migration_type_only_root, param_migration_network_only_root, can_t_migrate_running_without, cannot_live_migrate_replicated_not, param_targetstorage_failed_parse_storage, configuration_file_does_not_exist, locked, storage_does_not_support_images, content_type_not_available_storage, unable_find_configuration_file, storage_disabled, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: migration_aborted, migration_problems, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network

/nodes/{node}/qemu/{vmid}/monitor

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: Sys.Audit or Sys.Modify
  • Required: command, node, vmid
  • Errors: no_command_specified, unexpected_command, root_only_command, unexpected_required_permission_command, configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/move_disk

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Config.Disk
  • Required: disk, node, vmid (+8 optional)
  • Errors: disk_does_not_exist, disk_has_no_associated_volume, you_can_t_move_cdrom, you_can_t_move_same, param_storage_storage_does_not, you_can_t_move_disk, storage_migration_failed, could_not_find, could_not_find_target, both_vms_need_same, can_t_move_disks_template, disk_does_not_exist_2, target_disk_key_already_use, failed_parse_source_disk, cd_drive_contents_can_t, volume_not_managed_pve, can_t_move_disk_used, storage_does_not_support_moving, cannot_move_disk_another_while, failed_parse_source_disk_target, cannot_move_disk_replicated_storage, param_target_vmid, param_target_vmid_must_different, configuration_file_does_not_exist, locked, storage_disabled, unable_parse_volume_id, no_storage_id_specified, storage_does_not_exist, storage_not_available, unable_find_configuration_file, internal_error_hints_not_valid
  • Errors in the task: no_source_volid_provided, no_target_vmid_target_volname, param_skiplock_only_root_may, no_options_specified, param_revert_unknown_option, param_delete_you_can_t, param_delete_you_can_t_2, param_revert_you_can_t, param_delete_unknown_option, cannot_add_non_managed_pass, cannot_add_non_replicatable_volume, parameter_verification_failed, checksum_mismatch_file_change_other, balloon_value_too_large_must, only_root_can_delete_config, only_root_can_modify_config, invalid_bootorder_device_does_not, param_value, failed_update, connection_check_storage_failed, storage_not_online, only_root_can_set_config, no_storage_id_specified_no, protection_mode_enabled, unable_delete_volume_still_use, only_root_can_set_config_2, either_host_mapping_must_set, only_root_can_set_config_3

/nodes/{node}/qemu/{vmid}/mtunnel

  • POST: generic (from the schema)
  • Access: (/vms/{vmid}: VM.Allocate and /: Sys.Incoming)
  • Required: node, vmid (+2 optional)
  • Errors: param_needs_localhost_local_hostname, param_vmid_unable_create_empty, storage_does_not_support_images, bridge_does_not_exist, unexpeted_error_unable_parse_mtu, storage_disabled, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: encountered_wrong_lock_aborting_mtunnel, failed_allocate_nbd_disk, no_volid_set_nbd_volume, no_drivestr_set_nbd_volume, unknown_nbd_volume_key, unknown_nbd_volume, nbd_mismatch_vs, migration_over_non_unix_sockets, not_running, not_allowed_generate_ticket_unknown, failed_resolve_user_www_data, exiting_mtunnel, mtunnel_exited_unexpectedly, configuration_file_does_not_exist, got_strange_filename, no_lock_found_trying_remove, found_lock_trying_remove_lock, disk_import_already_running_pid, no_disk_import_running, qemu_exited_code, start_failed, internal_error_no_migration_ip, base_volume_still_use_linked, disk_not_support_live_restoring, mapping_contains_disk_which_does, missing_path_mapping, missing_volid_mapping, missing_format_mapping, invalid_format_mapping, live_restore_failed, no_vmid_specified, no_matching_import_export_format, failed_spawn_disk_import_child, failed_read_readyness_disk_import, could_not_get_ip_no, could_not_get_ip_multiple, no_migration_type_set, missing_description, don_t_know_how_encode, systemd_job_failed, invalid_hotplug_feature, more_than_hostnode_value_numa, hugepage_allocation_failed, must_running_locally, failed_start_dbus_vmstate_service, volume_deactivation_failed, base_volume_still_use_linked_2, quit_powerdown_failed_got_timeout, quit_powerdown_failed, locked, reverse_iteration_only_supported_default, unable_parse_volume

/nodes/{node}/qemu/{vmid}/mtunnelwebsocket

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, socket, ticket, vmid
  • Errors: param_needs_localhost_local_hostname, configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/pending

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/remote_migrate

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Migrate
  • Required: node, target-bridge, target-endpoint, target-storage, vmid (+4 optional)
  • Errors: param_vmid_cannot_remote_migrate, cannot_remote_migrate_replicated, can_t_migrate_running_without, could_not_validate_custom_cpu, param_target_storage_failed_parse, param_target_bridge_failed_parse, remote_migration_requires_explicit_storage, couldn_t_determine_endpoint_s, configuration_file_does_not_exist, locked, unable_find_configuration_file
  • Errors in the task: migration_aborted, migration_problems, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network

/nodes/{node}/qemu/{vmid}/resize

  • PUT: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Config.Disk
  • Required: disk, node, size, vmid (+2 optional)
  • Errors: param_skiplock_only_root_may, checksum_mismatch_file_change_other, disk_does_not_exist, disk_has_no_associated_volume, you_can_t_resize_cdrom, could_not_determine_current_size, internal_error, shrinking_disks_not_supported, configuration_file_does_not_exist, locked, no_block_inserted_drive, no_storage_id_specified, storage_does_not_exist, unable_parse_volume_id, internal_error_hints_not_valid, resize_file_device_not_possible

/nodes/{node}/qemu/{vmid}/rrd

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: ds, node, timeframe, vmid (+1 optional)
  • Errors: fixme_no_color_definition, rrd_error

/nodes/{node}/qemu/{vmid}/rrddata

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, timeframe, vmid (+1 optional)
  • Errors: rrd_error

/nodes/{node}/qemu/{vmid}/sendkey

  • PUT: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: key, node, vmid (+1 optional)
  • Errors: param_skiplock_only_root_may, configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/snapshot

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist, unable_find_configuration_file
  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+2 optional)
  • Errors: unable_use_snapshot_name_current, unable_use_snapshot_name_pending, configuration_file_does_not_exist, cannot_live_migrate_snapshot_ram
  • Errors in the task: you_can_t_take_snapshot, snapshot_name_already_used, snapshot_feature_not_available, missing_snapshot_lock, snapshot_does_not_exist, wrong_snapshot_state

/nodes/{node}/qemu/{vmid}/snapshot/{snapname}

  • DELETE: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist, top_most_snapshot_tpm_state, snapshot_does_not_exist, encountered_invalid_lock_expected, you_can_t_delete_snapshot, no_storage_id_specified, storage_does_not_exist, snapshot_needed_replication_job_run, too_many_unused_volumes_please
  • Errors in the task: failed_obtain_guest_migration_lock
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, snapname, vmid

/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/config

  • GET: generic (from the schema)
  • Access: /vms/{vmid}: VM.Snapshot or VM.Snapshot.Rollback or VM.Audit
  • Required: node, snapname, vmid
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist
  • PUT: generic (from the schema)
  • Access: /vms/{vmid}: VM.Snapshot
  • Required: node, snapname, vmid (+1 optional)
  • Errors: snapshot_does_not_exist, configuration_file_does_not_exist, locked

/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/rollback

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Snapshot or VM.Snapshot.Rollback
  • Required: node, snapname, vmid (+1 optional)
  • Errors in the task: you_can_t_rollback_if, snapshot_does_not_exist, unable_rollback_incomplete_snapshot_snapstate, unable_rollback_running, got_wrong_lock, configuration_file_does_not_exist, locked, too_many_unused_volumes_please

/nodes/{node}/qemu/{vmid}/spiceproxy

  • POST: generic (from the schema)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist, no_spice_port

/nodes/{node}/qemu/{vmid}/status

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/status/current

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Audit
  • Required: node, vmid
  • Errors: configuration_file_does_not_exist

/nodes/{node}/qemu/{vmid}/status/reboot

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+1 optional)
  • Errors: paused_cannot_shutdown, not_running, unable_find_configuration_file
  • Errors in the task: could_not_remove_reboot_request

/nodes/{node}/qemu/{vmid}/status/reset

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+1 optional)
  • Errors: param_skiplock_only_root_may, not_running, unable_find_configuration_file
  • Errors in the task: configuration_file_does_not_exist, locked

/nodes/{node}/qemu/{vmid}/status/resume

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+2 optional)
  • Errors: param_skiplock_only_root_may, param_nocheck_only_root_may, not_running, unable_find_configuration_file
  • Errors in the task: you_can_t_start_if, already_running, configuration_file_does_not_exist, locked, qemu_exited_code, start_failed, internal_error_no_migration_ip

/nodes/{node}/qemu/{vmid}/status/shutdown

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+4 optional)
  • Errors: param_skiplock_only_root_may, param_keepactive_only_root_may, paused_cannot_shutdown
  • Errors in the task: configuration_file_does_not_exist, quit_powerdown_failed_got_timeout, quit_powerdown_failed

/nodes/{node}/qemu/{vmid}/status/start

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+11 optional)
  • Errors: param_value_only_root_may, param_targetstorage_targetstorage_can_only, param_targetstorage_failed_parse_storage
  • Errors in the task: you_can_t_start_if, already_running, configuration_file_does_not_exist, locked, qemu_exited_code, start_failed, internal_error_no_migration_ip

/nodes/{node}/qemu/{vmid}/status/stop

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+5 optional)
  • Errors: param_skiplock_only_root_may, param_keepactive_only_root_may, param_migratedfrom_only_root_may, param_overrule_shutdown_not_applicable
  • Errors in the task: configuration_file_does_not_exist, quit_powerdown_failed_got_timeout, quit_powerdown_failed

/nodes/{node}/qemu/{vmid}/status/suspend

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.PowerMgmt
  • Required: node, vmid (+3 optional)
  • Errors: param_skiplock_only_root_may, not_running, cannot_suspend_ha_managed_disk, cannot_suspend_disk_due_passed, configuration_file_does_not_exist, unable_find_configuration_file, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/qemu/{vmid}/template

  • POST: generic (from the schema), starts a task
  • Access: /vms/{vmid}: VM.Allocate
  • Required: node, vmid (+1 optional)
  • Errors: unable_create_template_because_contains, you_can_t_convert_template, you_can_t_convert_template_2, configuration_file_does_not_exist, locked, unable_find_configuration_file

/nodes/{node}/qemu/{vmid}/termproxy

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+1 optional)
  • Errors: configuration_file_does_not_exist, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network
  • Errors in the task: failed_create_pipe, failed_get_file_descriptor_flags, failed_remove_cloexec_flag_fd
  • PUT: generic (from the schema)
  • Access: /vms/{vmid}: VM.Config.Disk
  • Required: idlist, node, vmid (+1 optional)

/nodes/{node}/qemu/{vmid}/vncproxy

  • POST: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, vmid (+2 optional)
  • Errors: configuration_file_does_not_exist, internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network, generate_random_bytes_range_invalid, generate_random_bytes_range_invalid_2, generate_random_bytes_range_invalid_3, generate_random_bytes_range_min, generate_random_bytes_range_failed, generate_random_bytes_range_failed_2
  • Errors in the task: failed_create_socket, failed_create_ssl_socket, connection_timed_out, connection_failed, failed_run_vncproxy

/nodes/{node}/qemu/{vmid}/vncwebsocket

  • GET: stateful (hand-written)
  • Access: /vms/{vmid}: VM.Console
  • Required: node, port, vmid, vncticket
  • Errors: configuration_file_does_not_exist

/nodes/{node}/query-oci-repo-tags

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.AccessNetwork
  • Required: node, reference
  • Errors: install_skopeo_list_tags_oci

/nodes/{node}/query-url-metadata

  • GET: generic (from the schema)
  • Access: (/: Sys.Audit, Sys.Modify or /nodes/{node}: Sys.AccessNetwork)
  • Required: node, url (+1 optional)
  • Errors: invalid_server_response

/nodes/{node}/replication

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)
  • Errors: internal_error_not_implemented, invalid_json_data, unable_parse_calendar_event_event

/nodes/{node}/replication/{id}

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: id, node

/nodes/{node}/replication/{id}/log

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: id, node (+2 optional)
  • Errors: no_such_replication_job, permission_check_failed

/nodes/{node}/replication/{id}/schedule_now

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: id, node
  • Errors: no_such_replication_job, guest_ids_reserved, invalid_json_data

/nodes/{node}/replication/{id}/status

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: id, node
  • Errors: no_such_replication_job, internal_error_not_implemented, invalid_json_data, unable_parse_calendar_event_event

/nodes/{node}/report

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node

/nodes/{node}/rrd

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: ds, node, timeframe (+1 optional)
  • Errors: fixme_no_color_definition, rrd_error

/nodes/{node}/rrddata

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node, timeframe (+1 optional)
  • Errors: rrd_error

/nodes/{node}/scan

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/scan/cifs

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node, server (+3 optional)
  • Errors: unable_resolve_address_server

/nodes/{node}/scan/iscsi

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node, portal
  • Errors: unable_parse_resolve_portal_address, param_portal_unable_resolve_portal

/nodes/{node}/scan/lvm

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node

/nodes/{node}/scan/lvmthin

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node, vg

/nodes/{node}/scan/nfs

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node, server
  • Errors: unable_resolve_address_server

/nodes/{node}/scan/pbs

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node, password, server, username (+2 optional)
  • Errors: error_fetching_datastores

/nodes/{node}/scan/zfs

  • GET: generic (from the schema)
  • Access: /storage: Datastore.Allocate
  • Required: node

/nodes/{node}/sdn

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/sdn/fabrics/{fabric}

  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{fabric}: SDN.Audit
  • Required: fabric, node

/nodes/{node}/sdn/fabrics/{fabric}/interfaces

  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{fabric}: SDN.Audit
  • Required: fabric, node

/nodes/{node}/sdn/fabrics/{fabric}/neighbors

  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{fabric}: SDN.Audit
  • Required: fabric, node

/nodes/{node}/sdn/fabrics/{fabric}/routes

  • GET: generic (from the schema)
  • Access: /sdn/fabrics/{fabric}: SDN.Audit
  • Required: fabric, node

/nodes/{node}/sdn/vnets/{vnet}

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vnet

/nodes/{node}/sdn/vnets/{vnet}/mac-vrf

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, vnet
  • Errors: param_vnet_vnet_does_not, param_zone_zone_does_not, param_zone_zone_not_evpn, param_zone_zone_vnet_does, no_sdn_vnet_id_specified, sdn_vnet_does_not_exist, no_sdn_zone_id_specified, sdn_zone_does_not_exist

/nodes/{node}/sdn/zones

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/sdn/zones/{zone}

  • GET: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Audit
  • Required: node, zone

/nodes/{node}/sdn/zones/{zone}/bridges

  • GET: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Audit
  • Required: node, zone
  • Errors: param_zone_zone_does_not, no_sdn_zone_id_specified, sdn_zone_does_not_exist

/nodes/{node}/sdn/zones/{zone}/content

  • GET: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Audit
  • Required: node, zone

/nodes/{node}/sdn/zones/{zone}/ip-vrf

  • GET: generic (from the schema)
  • Access: /sdn/zones/{zone}: SDN.Audit
  • Required: node, zone
  • Errors: param_zone_zone_does_not, param_zone_zone_not_evpn, param_zone_zone_does_not_2, no_sdn_zone_id_specified, sdn_zone_does_not_exist

/nodes/{node}/services

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node

/nodes/{node}/services/{service}

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node, service

/nodes/{node}/services/{service}/reload

  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, service
  • Errors in the task: unknown_service_command, invalid_service_cmd_refusing_stop

/nodes/{node}/services/{service}/restart

  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, service
  • Errors in the task: unknown_service_command, invalid_service_cmd_refusing_stop

/nodes/{node}/services/{service}/start

  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, service
  • Errors in the task: unknown_service_command, invalid_service_cmd_refusing_stop

/nodes/{node}/services/{service}/state

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node, service

/nodes/{node}/services/{service}/stop

  • POST: generic (from the schema), starts a task
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, service
  • Errors in the task: unknown_service_command, invalid_service_cmd_refusing_stop

/nodes/{node}/spiceshell

  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Console
  • Required: node (+3 optional)
  • Errors: permission_check_failed_user_root

/nodes/{node}/startall

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node (+3 optional)
  • Errors: permission_check_failed_powermgmt

/nodes/{node}/status

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.PowerMgmt
  • Required: command, node

/nodes/{node}/stopall

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node (+4 optional)
  • Errors: permission_check_failed_powermgmt

/nodes/{node}/storage

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node (+5 optional)
  • Errors: param_storage_no_such_storage, no_storage_id_specified, storage_does_not_exist, storage_not_available, storage_disabled

/nodes/{node}/storage/{storage}

  • GET: generic (from the schema)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage

/nodes/{node}/storage/{storage}/content

  • GET: stateful (hand-written)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage (+2 optional)
  • Errors: no_storage_id_specified, storage_does_not_exist, connection_check_storage_failed, storage_not_online
  • POST: stateful (hand-written)
  • Access: /storage/{storage}: Datastore.AllocateSpace
  • Required: filename, node, size, storage, vmid (+1 optional)
  • Errors: param_size_unable_parse_size, param_format_different_storage_formats, no_storage_id_specified, no_vmid_specified, storage_does_not_exist, vmid_contains_illegal_characters, connection_check_storage_failed, storage_not_online

/nodes/{node}/storage/{storage}/content/{volume}

  • DELETE: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, volume (+2 optional)
  • Errors: param_volume, param_volume_no_storage_specified, no_storage_id_specified, storage_does_not_exist
  • Errors in the task: base_volume_still_use_linked, connection_check_storage_failed, storage_not_online
  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, volume (+1 optional)
  • Errors: volume_size_info_failed_no, volume_size_info_failed_no_2, volume_has_size_zero, param_volume, param_volume_no_storage_specified, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, no_storage_id_specified, storage_does_not_exist
  • POST: generic (from the schema), starts a task
  • Access: root only
  • Required: node, target, volume (+2 optional)
  • Errors: param_volume, param_volume_no_storage_specified
  • Errors in the task: internal_error_unexpected_output_mtunnel, internal_error_bad_output_mtunnel, failed_get_ip_network, cannot_migrate_storage_type, unable_parse_volume_id, no_storage_id_specified, storage_does_not_exist, unsupported_format_storage_type
  • PUT: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, volume (+3 optional)
  • Errors: param_volume, param_volume_no_storage_specified, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, number_protected_backups_per_guest, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/storage/{storage}/download-url

  • POST: stateful (hand-written)
  • Access: (/storage/{storage}: Datastore.AllocateTemplate and (/: Sys.Audit, Sys.Modify or /nodes/{node}: Sys.AccessNetwork))
  • Required: content, filename, node, storage, url (+4 optional)
  • Errors: can_t_upload_storage_type, storage_not_configured_content_type, param_filename_wrong_file_extension, param_filename_invalid_filename_wrong, param_content_upload_content_type, storage_disabled, connection_check_storage_failed, storage_not_online, ova_archive_has_no_ovf, no_storage_id_specified, storage_does_not_exist, storage_not_available, failed_query_file_information_qemu, data_file_references_not_allowed, multiple_children_extents_not_allowed, backing_file_not_allowed_untrusted, size_not_integer, used_not_integer, format_includes_whitespace, qemu_img_bug_queried_format
  • Errors in the task: decompression_not_supported, no_decompression_method_found, error_archive_format_not_defined

/nodes/{node}/storage/{storage}/file-restore/download

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: filepath, node, storage, volume (+1 optional)
  • Errors: param_storage_only_pbs_storages, param_volume_storage_id_mismatch, no_storage_id_specified, storage_does_not_exist, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, no_section_config_provided, undefined_store_id

/nodes/{node}/storage/{storage}/file-restore/list

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: filepath, node, storage, volume
  • Errors: param_storage_only_pbs_storages, invalid_proxmox_file_restore_output, param_volume_storage_id_mismatch, no_storage_id_specified, storage_does_not_exist, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, no_section_config_provided, undefined_store_id

/nodes/{node}/storage/{storage}/identity

  • GET: generic (from the schema)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage
  • Errors: storage_disabled, no_storage_id_specified, storage_does_not_exist, storage_not_available

/nodes/{node}/storage/{storage}/import-metadata

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, storage, volume
  • Errors: unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, storage_does_not_support_importer, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/storage/{storage}/oci-registry-pull

  • POST: generic (from the schema), starts a task
  • Access: (/storage/{storage}: Datastore.AllocateTemplate and /nodes/{node}: Sys.AccessNetwork)
  • Required: node, reference, storage (+1 optional)
  • Errors: install_skopeo_pull_oci_images, can_t_upload_storage_type, storage_not_configured_content_type, refusing_override_existing_file, got_interrupted_signal, storage_disabled, connection_check_storage_failed, storage_not_online, no_storage_id_specified, storage_does_not_exist, storage_not_available
  • Errors in the task: unable_rename_temporary_file

/nodes/{node}/storage/{storage}/prunebackups

  • DELETE: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node, storage (+3 optional)
  • Errors in the task: storage_does_not_support_backups, no_prune_backups_options_configured, no_storage_id_specified, storage_does_not_exist, connection_check_storage_failed, storage_not_online
  • GET: generic (from the schema)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage (+3 optional)
  • Errors: storage_does_not_support_backups, no_prune_backups_options_configured, no_storage_id_specified, storage_does_not_exist, connection_check_storage_failed, storage_not_online

/nodes/{node}/storage/{storage}/rrd

  • GET: generic (from the schema)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: ds, node, storage, timeframe (+1 optional)
  • Errors: fixme_no_color_definition, rrd_error

/nodes/{node}/storage/{storage}/rrddata

  • GET: generic (from the schema)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage, timeframe (+1 optional)
  • Errors: rrd_error

/nodes/{node}/storage/{storage}/status

  • GET: stateful (hand-written)
  • Access: /storage/{storage}: Datastore.Audit or Datastore.AllocateSpace
  • Required: node, storage
  • Errors: param_storage_no_such_storage, storage_disabled

/nodes/{node}/storage/{storage}/upload

  • POST: stateful (hand-written)
  • Access: /storage/{storage}: Datastore.AllocateTemplate
  • Required: content, filename, node, storage (+3 optional)
  • Errors: can_t_upload_storage_type, missing_temporary_file_name, storage_disabled, no_storage_id_specified, storage_does_not_exist, storage_not_available

/nodes/{node}/subscription

  • DELETE: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node
  • Errors: cannot_delete_subscription_key
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node
  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node (+1 optional)
  • Errors: no_matching_server_id_found, updating_offline_key_not_possible, wrong_number_sockets, subscription_key_architecture_but_host, failed_remove_apt_auth_ceph, wrong_subscription_key_format
  • PUT: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: key, node
  • Errors: failed_generate_server_id, wrong_number_sockets, subscription_key_architecture_but_host, failed_remove_apt_auth_ceph, wrong_subscription_key_format

/nodes/{node}/suspendall

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: node (+2 optional)
  • Errors: permission_check_failed_powermgmt_config

/nodes/{node}/syslog

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Syslog
  • Required: node (+5 optional)

/nodes/{node}/tasks

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node (+10 optional)

/nodes/{node}/tasks/{upid}

  • DELETE: generic (from the schema)
  • Access: any logged-in user
  • Required: node, upid
  • Errors: param_upid_unable_parse_worker, param_upid_no_such_task
  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, upid

/nodes/{node}/tasks/{upid}/log

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, upid (+3 optional)
  • Errors: param_upid_unable_parse_worker, download_cannot_used_together_start, could_not_create_compressed_file, could_not_open_file

/nodes/{node}/tasks/{upid}/status

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: node, upid
  • Errors: param_upid_unable_parse_worker, param_upid_no_such_task

/nodes/{node}/termproxy

  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Console
  • Required: node (+2 optional)
  • Errors in the task: failed_create_pipe, failed_get_file_descriptor_flags, failed_remove_cloexec_flag_fd

/nodes/{node}/time

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Audit
  • Required: node
  • PUT: generic (from the schema)
  • Access: /nodes/{node}: Sys.Modify
  • Required: node, timezone
  • Errors: param_timezone_no_such_timezone

/nodes/{node}/version

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node

/nodes/{node}/vncshell

  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.Console
  • Required: node (+5 optional)
  • Errors: permission_check_failed_user_root, generate_random_bytes_range_invalid, generate_random_bytes_range_invalid_2, generate_random_bytes_range_invalid_3, generate_random_bytes_range_min, generate_random_bytes_range_failed, generate_random_bytes_range_failed_2

/nodes/{node}/vncwebsocket

  • GET: generic (from the schema)
  • Access: /nodes/{node}: Sys.Console
  • Required: node, port, vncticket

/nodes/{node}/vzdump

  • POST: generic (from the schema), starts a task
  • Access: any logged-in user
  • Required: none (+33 optional)
  • Errors: param_option_only_allowed_command, param_stdout_option_only_allowed, you_can_only_backup_single, can_t_dup_stdout, unable_redirect_stdout, param_all_option_conflicts_option, param_exclude_option_conflicts_option, param_pool_option_conflicts_option, param_notes_template, param_vmid_property_missing, no_such_vzdump_option, stopping_backup_process_failed, parameter_verification_failed, pool_does_not_exist, error_strange_id
  • Errors in the task: interrupted_signal, cannot_use_options_storage_stdout, cannot_use_options_storage_dumpdir, internal_error, unable_find_command

/nodes/{node}/vzdump/defaults

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node (+1 optional)
  • Errors: can_t_use_storage_backups, no_storage_id_specified, storage_does_not_exist

/nodes/{node}/vzdump/extractconfig

  • GET: generic (from the schema)
  • Access: any logged-in user
  • Required: node, volume
  • Errors: unable_extract_configuration_not_guest, unable_use_volume_content_type, cannot_access_snippet_non_snippet, missing_privileges_access, only_root_can_pass_arbitrary, backups_format_not_supported_vms, cannot_determine_backup_guest_type, unable_parse_volume_id, no_storage_id_specified, storage_does_not_exist, storage_disabled, unable_extract_configuration_backup_format, can_t_find_file, error_couldn_t_determine_archive, error_file_does_not_exist, unable_open_file, error_archive_contains_no_configuration, config_extraction_failed_exit_code

/nodes/{node}/wakeonlan

  • POST: generic (from the schema)
  • Access: /nodes/{node}: Sys.PowerMgmt
  • Required: node
  • Errors: local_cannot_wake_my_self, no_wake_lan_mac_address, unable_open_socket, unable_set_socket_option, unable_bind_socket_interface, unable_send_packet

pools

/pools

  • DELETE: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Allocate
  • Required: poolid
  • Errors: pool_does_not_exist, pool_not_empty_contains_pool, pool_not_empty_contains, pool_not_empty_contains_storage, no_storage_id_specified, storage_does_not_exist
  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none (+2 optional)
  • Errors: pool_does_not_exist, no_storage_id_specified, storage_does_not_exist
  • POST: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Allocate
  • Required: poolid (+1 optional)
  • Errors: pool_already_exists, parent_pool_does_not_exist, pool_name_must_start_letter
  • PUT: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Allocate
  • Required: poolid (+5 optional)
  • Errors: pool_does_not_exist, not_pool_member, already_pool_member, belongs_already_pool_allow_move, storage_not_pool_member, storage_already_pool_member

/pools/{poolid}

  • DELETE: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Allocate
  • Required: poolid
  • GET: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Audit
  • Required: poolid (+1 optional)
  • PUT: stateful (hand-written)
  • Access: /pool/{poolid}: Pool.Allocate
  • Required: poolid (+5 optional)

storage

/storage

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none (+1 optional)
  • Errors: no_storage_id_specified, storage_does_not_exist
  • POST: stateful (hand-written)
  • Access: /storage: Datastore.Allocate
  • Required: storage, type (+59 optional)
  • Errors: storage_id_already_defined, no_storage_id_specified, storage_does_not_exist

/storage/{storage}

  • DELETE: stateful (hand-written)
  • Access: /storage: Datastore.Allocate
  • Required: storage
  • Errors: can_t_remove_storage_storage, no_storage_id_specified, storage_does_not_exist
  • GET: stateful (hand-written)
  • Access: /storage/{storage}: Datastore.Allocate
  • Required: storage
  • Errors: no_storage_id_specified, storage_does_not_exist
  • PUT: stateful (hand-written)
  • Access: /storage: Datastore.Allocate
  • Required: storage (+50 optional)
  • Errors: no_such_option, unable_delete_required_option, unable_delete_fixed_option, cannot_set_delete_property_same, no_storage_id_specified, storage_does_not_exist

version

/version

  • GET: stateful (hand-written)
  • Access: any logged-in user
  • Required: none