X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=api-viewer%2Fapidata.js;h=a44e50e1e7f22345de5e4e9eea78c36204dc9b95;hb=c5aa7e14b592291fa456e0749fcea4b953704b73;hp=60e0a238d8076d5371992170673939d2de9ab18b;hpb=e2d681b3686090218b5217114ccdde49300c902c;p=pve-docs.git diff --git a/api-viewer/apidata.js b/api-viewer/apidata.js index 60e0a23..a44e50e 100644 --- a/api-viewer/apidata.js +++ b/api-viewer/apidata.js @@ -6,6 +6,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Mark replication job for removal.", "method" : "DELETE", "name" : "delete", @@ -49,6 +50,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read replication job configuration.", "method" : "GET", "name" : "read", @@ -72,6 +74,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update replication job configuration.", "method" : "PUT", "name" : "update", @@ -130,7 +133,7 @@ var pveapi = [ }, "schedule" : { "default" : "*/15", - "description" : "Storage replication schedule. The format is a subset of `systemd` calender events.", + "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.", "format" : "pve-calendar-event", "maxLength" : 128, "optional" : 1, @@ -169,6 +172,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List replication jobs.", "method" : "GET", "name" : "index", @@ -194,6 +198,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new replication job", "method" : "POST", "name" : "create", @@ -237,7 +242,7 @@ var pveapi = [ }, "schedule" : { "default" : "*/15", - "description" : "Storage replication schedule. The format is a subset of `systemd` calender events.", + "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.", "format" : "pve-calendar-event", "maxLength" : 128, "optional" : 1, @@ -289,11 +294,42 @@ var pveapi = [ }, { "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Return the version of the cluster join API available on this node.", + "method" : "GET", + "name" : "join_api_version", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "description" : "Cluster Join API version, currently 1", + "minimum" : 0, + "type" : "integer" + } + } + }, + "leaf" : 1, + "path" : "/cluster/config/apiversion", + "text" : "apiversion" + }, { "children" : [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Removes a node from the cluster configuration.", "method" : "DELETE", "name" : "delnode", @@ -314,18 +350,55 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Adds a node to the cluster configuration. This call is for internal use.", "method" : "POST", "name" : "addnode", "parameters" : { "additionalProperties" : 0, "properties" : { + "apiversion" : { + "description" : "The JOIN_API_VERSION of the new node.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, "force" : { "description" : "Do not throw error if node already exists.", "optional" : 1, "type" : "boolean", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, + "new_node_ip" : { + "description" : "IP Address of node to add. Used as fallback if no links are given.", + "format" : "ip", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -339,21 +412,6 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, - "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node", "minimum" : 0, @@ -371,6 +429,12 @@ var pveapi = [ }, "corosync_conf" : { "type" : "string" + }, + "warnings" : { + "items" : { + "type" : "string" + }, + "type" : "array" } }, "type" : "object" @@ -384,6 +448,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Corosync node list.", "method" : "GET", "name" : "nodes", @@ -425,6 +490,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get information needed to join this cluster over the connected node.", "method" : "GET", "name" : "join_info", @@ -485,9 +551,24 @@ var pveapi = [ "type" : "integer" }, "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, "optional" : 1, "type" : "string" } @@ -509,7 +590,8 @@ var pveapi = [ } }, "POST" : { - "description" : "Joins this node into an existing cluster.", + "allowtoken" : 1, + "description" : "Joins this node into an existing cluster. If no links are given, default to IP resolved by node's hostname on single link (fallback fails for clusters with multiple links).", "method" : "POST", "name" : "join", "parameters" : { @@ -531,6 +613,29 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, "nodeid" : { "description" : "Node id for this node.", "minimum" : 1, @@ -544,21 +649,6 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "ring0_addr" : { - "default" : "IP resolved by node's hostname", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node", "minimum" : 0, @@ -581,6 +671,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get corosync totem protocol settings.", "method" : "GET", "name" : "totem", @@ -604,10 +695,39 @@ var pveapi = [ "leaf" : 1, "path" : "/cluster/config/totem", "text" : "totem" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get QDevice status", + "method" : "GET", + "name" : "status", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/cluster/config/qdevice", + "text" : "qdevice" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -638,26 +758,13 @@ var pveapi = [ } }, "POST" : { - "description" : "Generate new cluster configuration.", + "allowtoken" : 1, + "description" : "Generate new cluster configuration. If no links given, default to local IP address as link0.", "method" : "POST", "name" : "create", "parameters" : { "additionalProperties" : 0, "properties" : { - "bindnet0_addr" : { - "description" : "This specifies the network address the corosync ring 0 executive should bind to and defaults to the local IP address of the node.", - "format" : "ip", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "bindnet1_addr" : { - "description" : "This specifies the network address the corosync ring 1 executive should bind to and is optional.", - "format" : "ip", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "clustername" : { "description" : "The name of the cluster.", "format" : "pve-node", @@ -665,6 +772,29 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, "nodeid" : { "description" : "Node id for this node.", "minimum" : 1, @@ -672,21 +802,6 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, - "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node.", "minimum" : 1, @@ -715,6 +830,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -760,6 +876,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -821,9 +938,25 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "optional" : 1, - "type" : "integer" + "type" : "string" }, "pos" : { "type" : "integer" @@ -848,6 +981,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -919,6 +1053,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -996,6 +1146,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete security group.", "method" : "DELETE", "name" : "delete_security_group", @@ -1026,6 +1177,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -1070,6 +1222,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -1134,6 +1287,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -1204,6 +1373,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List security groups.", "method" : "GET", "name" : "list_security_groups", @@ -1246,6 +1416,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new security group.", "method" : "POST", "name" : "create_security_group", @@ -1305,6 +1476,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -1343,6 +1515,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -1397,9 +1570,25 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "optional" : 1, - "type" : "integer" + "type" : "string" }, "pos" : { "type" : "integer" @@ -1424,6 +1613,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -1488,6 +1678,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -1565,6 +1771,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -1600,6 +1807,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -1657,6 +1865,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -1731,6 +1955,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network from IPSet.", "method" : "DELETE", "name" : "remove_ip", @@ -1774,6 +1999,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read IP or Network settings from IPSet.", "method" : "GET", "name" : "read_ip", @@ -1810,6 +2036,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network settings", "method" : "PUT", "name" : "update_ip", @@ -1870,6 +2097,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete IPSet", "method" : "DELETE", "name" : "delete_ipset", @@ -1900,6 +2128,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List IPSet content", "method" : "GET", "name" : "get_ipset", @@ -1957,6 +2186,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add IP or Network to IPSet.", "method" : "POST", "name" : "create_ip", @@ -2010,6 +2240,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List IPSets", "method" : "GET", "name" : "ipset_index", @@ -2058,6 +2289,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new IPSet", "method" : "POST", "name" : "create_ipset", @@ -2117,6 +2349,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network alias.", "method" : "DELETE", "name" : "remove_alias", @@ -2154,6 +2387,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read alias.", "method" : "GET", "name" : "read_alias", @@ -2183,6 +2417,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network alias.", "method" : "PUT", "name" : "update_alias", @@ -2246,6 +2481,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List aliases", "method" : "GET", "name" : "get_aliases", @@ -2293,6 +2529,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create IP or Network Alias.", "method" : "POST", "name" : "create_alias", @@ -2341,6 +2578,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Firewall options.", "method" : "GET", "name" : "get_options", @@ -2370,6 +2608,34 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log_ratelimit" : { + "description" : "Log ratelimiting settings", + "format" : { + "burst" : { + "default" : 5, + "description" : "Inital burst of packages which will get logged", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "enable" : { + "default" : "1", + "default_key" : 1, + "description" : "Enable or disable log rate limiting", + "type" : "boolean" + }, + "rate" : { + "default" : "1/second", + "description" : "Frequency with which the burst bucket gets refilled", + "format_description" : "rate", + "optional" : 1, + "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, "policy_in" : { "description" : "Input policy.", "enum" : [ @@ -2395,6 +2661,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set Firewall options.", "method" : "PUT", "name" : "set_options", @@ -2429,6 +2696,35 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "log_ratelimit" : { + "description" : "Log ratelimiting settings", + "format" : { + "burst" : { + "default" : 5, + "description" : "Inital burst of packages which will get logged", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "enable" : { + "default" : "1", + "default_key" : 1, + "description" : "Enable or disable log rate limiting", + "type" : "boolean" + }, + "rate" : { + "default" : "1/second", + "description" : "Frequency with which the burst bucket gets refilled", + "format_description" : "rate", + "optional" : 1, + "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[enable=]<1|0> [,burst=] [,rate=]" + }, "policy_in" : { "description" : "Input policy.", "enum" : [ @@ -2473,6 +2769,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List available macros", "method" : "GET", "name" : "get_macros", @@ -2507,6 +2804,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", "method" : "GET", "name" : "refs", @@ -2567,6 +2865,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -2600,6 +2899,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete vzdump backup job definition.", "method" : "DELETE", "name" : "delete_job", @@ -2629,6 +2929,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read vzdump backup job definition.", "method" : "GET", "name" : "read_job", @@ -2657,6 +2958,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update vzdump backup job definition.", "method" : "PUT", "name" : "update_job", @@ -2685,7 +2987,8 @@ var pveapi = [ "0", "1", "gzip", - "lzo" + "lzo", + "zstd" ], "optional" : 1, "type" : "string" @@ -2804,6 +3107,12 @@ var pveapi = [ "type" : "integer", "typetext" : "" }, + "pool" : { + "description" : "Backup all known guest systems included in the specified pool.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "quiet" : { "default" : 0, "description" : "Be quiet.", @@ -2847,7 +3156,7 @@ var pveapi = [ }, "stop" : { "default" : 0, - "description" : "Stop runnig backup jobs on this host.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -2879,6 +3188,13 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" } } }, @@ -2904,6 +3220,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List vzdump backup schedule.", "method" : "GET", "name" : "index", @@ -2923,6 +3240,8 @@ var pveapi = [ "items" : { "properties" : { "id" : { + "description" : "The job ID.", + "maxLength" : 50, "type" : "string" } }, @@ -2938,6 +3257,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new vzdump backup job.", "method" : "POST", "name" : "create_job", @@ -2966,7 +3286,8 @@ var pveapi = [ "0", "1", "gzip", - "lzo" + "lzo", + "zstd" ], "optional" : 1, "type" : "string" @@ -3073,6 +3394,12 @@ var pveapi = [ "type" : "integer", "typetext" : "" }, + "pool" : { + "description" : "Backup all known guest systems included in the specified pool.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "quiet" : { "default" : 0, "description" : "Be quiet.", @@ -3116,7 +3443,7 @@ var pveapi = [ }, "stop" : { "default" : 0, - "description" : "Stop runnig backup jobs on this host.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -3148,6 +3475,13 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" } } }, @@ -3180,6 +3514,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Request resource migration (online) to another node.", "method" : "POST", "name" : "migrate", @@ -3187,7 +3522,7 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "node" : { - "description" : "The cluster node name.", + "description" : "Target node.", "format" : "pve-node", "type" : "string", "typetext" : "" @@ -3222,6 +3557,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Request resource relocatzion to another node. This stops the service on the old node, and restarts it on the target node.", "method" : "POST", "name" : "relocate", @@ -3229,7 +3565,7 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "node" : { - "description" : "The cluster node name.", + "description" : "Target node.", "format" : "pve-node", "type" : "string", "typetext" : "" @@ -3264,6 +3600,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete resource configuration.", "method" : "DELETE", "name" : "delete", @@ -3293,6 +3630,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read resource configuration.", "method" : "GET", "name" : "read", @@ -3316,9 +3654,61 @@ var pveapi = [ ] ] }, - "returns" : {} + "returns" : { + "properties" : { + "comment" : { + "description" : "Description.", + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Can be used to prevent concurrent modifications.", + "type" : "string" + }, + "group" : { + "description" : "The HA group identifier.", + "format" : "pve-configid", + "optional" : 1, + "type" : "string" + }, + "max_relocate" : { + "description" : "Maximal number of service relocate tries when a service failes to start.", + "optional" : 1, + "type" : "integer" + }, + "max_restart" : { + "description" : "Maximal number of tries to restart the service on a node after its start failed.", + "optional" : 1, + "type" : "integer" + }, + "sid" : { + "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).", + "format" : "pve-ha-resource-or-vm-id", + "type" : "string", + "typetext" : ":" + }, + "state" : { + "description" : "Requested resource state.", + "enum" : [ + "started", + "stopped", + "enabled", + "disabled", + "ignored" + ], + "optional" : 1, + "type" : "string" + }, + "type" : { + "description" : "The type of the resources.", + "type" : "string" + } + }, + "type" : "object" + } }, "PUT" : { + "allowtoken" : 1, "description" : "Update resource configuration.", "method" : "PUT", "name" : "update", @@ -3415,6 +3805,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List HA resources.", "method" : "GET", "name" : "index", @@ -3460,6 +3851,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new HA resource.", "method" : "POST", "name" : "create", @@ -3552,6 +3944,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete ha group configuration.", "method" : "DELETE", "name" : "delete", @@ -3581,6 +3974,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read ha group configuration.", "method" : "GET", "name" : "read", @@ -3607,6 +4001,7 @@ var pveapi = [ "returns" : {} }, "PUT" : { + "allowtoken" : 1, "description" : "Update ha group configuration.", "method" : "PUT", "name" : "update", @@ -3689,6 +4084,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get HA groups.", "method" : "GET", "name" : "index", @@ -3723,6 +4119,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new HA group.", "method" : "POST", "name" : "create", @@ -3800,6 +4197,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get HA manger status.", "method" : "GET", "name" : "status", @@ -3827,6 +4225,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get full HA manger status, including LRM status.", "method" : "GET", "name" : "manager_status", @@ -3854,6 +4253,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -3885,6 +4285,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -3930,6 +4331,485 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, + "description" : "Delete ACME plugin configuration.", + "method" : "DELETE", + "name" : "delete_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get ACME plugin configuration.", + "method" : "GET", + "name" : "get_plugin_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update ACME plugin configuration.", + "method" : "PUT", + "name" : "update_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "api" : { + "description" : "API plugin name", + "enum" : [ + "acmedns", + "acmeproxy", + "active24", + "ad", + "ali", + "autodns", + "aws", + "azure", + "cf", + "clouddns", + "cloudns", + "cn", + "conoha", + "constellix", + "cx", + "cyon", + "da", + "ddnss", + "desec", + "dgon", + "dnsimple", + "do", + "doapi", + "domeneshop", + "dp", + "dpi", + "dreamhost", + "duckdns", + "durabledns", + "dyn", + "dynu", + "dynv6", + "easydns", + "euserv", + "exoscale", + "freedns", + "gandi_livedns", + "gcloud", + "gd", + "gdnsdk", + "he", + "hexonet", + "hostingde", + "infoblox", + "internetbs", + "inwx", + "ispconfig", + "jd", + "kas", + "kinghost", + "knot", + "leaseweb", + "lexicon", + "linode", + "linode_v4", + "loopia", + "lua", + "maradns", + "me", + "miab", + "misaka", + "myapi", + "mydevil", + "mydnsjp", + "namecheap", + "namecom", + "namesilo", + "nederhost", + "neodigit", + "netcup", + "nic", + "nsd", + "nsone", + "nsupdate", + "nw", + "one", + "online", + "openprovider", + "opnsense", + "ovh", + "pdns", + "pleskxml", + "pointhq", + "rackspace", + "rcode0", + "regru", + "schlundtech", + "selectel", + "servercow", + "tele3", + "ultra", + "unoeuro", + "variomedia", + "vscale", + "vultr", + "yandex", + "zilore", + "zone", + "zonomi" + ], + "optional" : 1, + "type" : "string" + }, + "data" : { + "description" : "DNS plugin data. (base64 encoded)", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "disable" : { + "description" : "Flag to disable the config.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "ACME Plugin ID name", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "validation-delay" : { + "default" : 30, + "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.", + "maximum" : 172800, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 172800)" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/acme/plugins/{id}", + "text" : "{id}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "ACME plugin index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list ACME plugins of a specific type", + "enum" : [ + "dns", + "standalone" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "items" : { + "properties" : { + "plugin" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{plugin}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Add ACME plugin configuration.", + "method" : "POST", + "name" : "add_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "api" : { + "description" : "API plugin name", + "enum" : [ + "acmedns", + "acmeproxy", + "active24", + "ad", + "ali", + "autodns", + "aws", + "azure", + "cf", + "clouddns", + "cloudns", + "cn", + "conoha", + "constellix", + "cx", + "cyon", + "da", + "ddnss", + "desec", + "dgon", + "dnsimple", + "do", + "doapi", + "domeneshop", + "dp", + "dpi", + "dreamhost", + "duckdns", + "durabledns", + "dyn", + "dynu", + "dynv6", + "easydns", + "euserv", + "exoscale", + "freedns", + "gandi_livedns", + "gcloud", + "gd", + "gdnsdk", + "he", + "hexonet", + "hostingde", + "infoblox", + "internetbs", + "inwx", + "ispconfig", + "jd", + "kas", + "kinghost", + "knot", + "leaseweb", + "lexicon", + "linode", + "linode_v4", + "loopia", + "lua", + "maradns", + "me", + "miab", + "misaka", + "myapi", + "mydevil", + "mydnsjp", + "namecheap", + "namecom", + "namesilo", + "nederhost", + "neodigit", + "netcup", + "nic", + "nsd", + "nsone", + "nsupdate", + "nw", + "one", + "online", + "openprovider", + "opnsense", + "ovh", + "pdns", + "pleskxml", + "pointhq", + "rackspace", + "rcode0", + "regru", + "schlundtech", + "selectel", + "servercow", + "tele3", + "ultra", + "unoeuro", + "variomedia", + "vscale", + "vultr", + "yandex", + "zilore", + "zone", + "zonomi" + ], + "optional" : 1, + "type" : "string" + }, + "data" : { + "description" : "DNS plugin data. (base64 encoded)", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "disable" : { + "description" : "Flag to disable the config.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "ACME Plugin ID name", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "ACME challenge type.", + "enum" : [ + "dns", + "standalone" + ], + "type" : "string" + }, + "validation-delay" : { + "default" : 30, + "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.", + "maximum" : 172800, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 172800)" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/acme/plugins", + "text" : "plugins" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, "description" : "Deactivate existing ACME account at CA.", "method" : "DELETE", "name" : "deactivate_account", @@ -3953,6 +4833,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Return existing ACME account information.", "method" : "GET", "name" : "get_account", @@ -3998,6 +4879,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update existing ACME account information with CA. Note: not specifying any new account information triggers a refresh.", "method" : "PUT", "name" : "update_account", @@ -4035,6 +4917,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "ACMEAccount index.", "method" : "GET", "name" : "account_index", @@ -4060,6 +4943,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Register a new ACME account with CA.", "method" : "POST", "name" : "register_account", @@ -4109,6 +4993,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Retrieve ACME TermsOfService URL from CA.", "method" : "GET", "name" : "get_tos", @@ -4129,6 +5014,7 @@ var pveapi = [ }, "returns" : { "description" : "ACME TermsOfService URL.", + "optional" : 1, "type" : "string" } } @@ -4140,6 +5026,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get named known ACME directory endpoints.", "method" : "GET", "name" : "get_directories", @@ -4175,6 +5062,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "ACMEAccount index.", "method" : "GET", "name" : "index", @@ -4204,8 +5092,1260 @@ var pveapi = [ "text" : "acme" }, { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get ceph metadata.", + "method" : "GET", + "name" : "metadata", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "scope" : { + "default" : "all", + "enum" : [ + "all", + "versions" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/cluster/ceph/metadata", + "text" : "metadata" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get ceph status.", + "method" : "GET", + "name" : "status", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/cluster/ceph/status", + "text" : "status" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get the status of a specific ceph flag.", + "method" : "GET", + "name" : "get_flag", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "flag" : { + "description" : "The name of the flag name to get.", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "boolean" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set or clear (unset) a specific ceph flag", + "method" : "PUT", + "name" : "update_flag", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "flag" : { + "description" : "The ceph flag to update", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" + }, + "value" : { + "description" : "The new value of the flag", + "type" : "boolean", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/ceph/flags/{flag}", + "text" : "{flag}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "get the status of all ceph flags", + "method" : "GET", + "name" : "get_all_flags", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "items" : { + "additionalProperties" : 1, + "properties" : { + "name" : { + "description" : "Flag name.", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set/Unset multiple ceph flags at once.", + "method" : "PUT", + "name" : "set_flags", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "nobackfill" : { + "description" : "Backfilling of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nodeep-scrub" : { + "description" : "Deep Scrubbing is disabled.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nodown" : { + "description" : "OSD failure reports are being ignored, such that the monitors will not mark OSDs down.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noin" : { + "description" : "OSDs that were previously marked out will not be marked back in when they start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noout" : { + "description" : "OSDs will not automatically be marked out after the configured interval.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "norebalance" : { + "description" : "Rebalancing of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "norecover" : { + "description" : "Recovery of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noscrub" : { + "description" : "Scrubbing is disabled.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "notieragent" : { + "description" : "Cache tiering activity is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noup" : { + "description" : "OSDs are not allowed to start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "pause" : { + "description" : "Pauses read and writes.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/ceph/flags", + "text" : "flags" + } + ], "info" : { "GET" : { + "allowtoken" : 1, + "description" : "Cluster ceph index.", + "method" : "GET", + "name" : "cephindex", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/cluster/ceph", + "text" : "ceph" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn vnet object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn vnet configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets/{vnet}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn vnet object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "alias" : { + "description" : "alias name of the vnet", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv4" : { + "description" : "Anycast router ipv4 address.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv6" : { + "description" : "Anycast router ipv6 address.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mac" : { + "description" : "Anycast router mac address", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan or vxlan id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "zone id", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/vnets/{vnet}", + "text" : "{vnet}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN vnets index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/vnets/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{vnet}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn vnet object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "alias" : { + "description" : "alias name of the vnet", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv4" : { + "description" : "Anycast router ipv4 address.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv6" : { + "description" : "Anycast router ipv6 address.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mac" : { + "description" : "Anycast router mac address", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan or vxlan id", + "optional" : 0, + "type" : "integer", + "typetext" : "" + }, + "type" : { + "description" : "Type", + "enum" : [ + "vnet" + ], + "optional" : 1, + "type" : "string" + }, + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "zone id", + "optional" : 0, + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/vnets", + "text" : "vnets" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn zone object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn zone configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn zone object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bridge" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "controller" : { + "description" : "Frr router name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dp-id" : { + "description" : "Faucet dataplane id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "mtu" : { + "description" : "mtu", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan tag", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "vrf-vxlan" : { + "description" : "l3vni.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/zones/{zone}", + "text" : "{zone}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN zones index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list sdn zones of specific type", + "enum" : [ + "evpn", + "faucet", + "qinq", + "vlan", + "vxlan" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "type" : { + "type" : "string" + }, + "zone" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{zone}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn zone object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bridge" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "controller" : { + "description" : "Frr router name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dp-id" : { + "description" : "Faucet dataplane id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "mtu" : { + "description" : "mtu", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan tag", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "type" : { + "description" : "Plugin type.", + "enum" : [ + "evpn", + "faucet", + "qinq", + "vlan", + "vxlan" + ], + "format" : "pve-configid", + "type" : "string" + }, + "vrf-vxlan" : { + "description" : "l3vni.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/zones", + "text" : "zones" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn controller object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn controller configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers/{controller}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn controller object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "asn" : { + "description" : "autonomous system number", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-external-peers" : { + "description" : "upstream bgp peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/controllers/{controller}", + "text" : "{controller}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN controllers index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list sdn controllers of specific type", + "enum" : [ + "evpn", + "faucet" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/controllers/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "controller" : { + "type" : "string" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{controller}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn controller object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "asn" : { + "description" : "autonomous system number", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + }, + "gateway-external-peers" : { + "description" : "upstream bgp peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Plugin type.", + "enum" : [ + "evpn", + "faucet" + ], + "format" : "pve-configid", + "type" : "string" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/controllers", + "text" : "controllers" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "SDN.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "id" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{id}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Apply sdn controller changes && reload.", + "method" : "PUT", + "name" : "reload", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/sdn", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn", + "text" : "sdn" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, "description" : "Read cluster log", "method" : "GET", "name" : "log", @@ -4240,6 +6380,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Resources index (cluster wide).", "method" : "GET", "name" : "resources", @@ -4250,7 +6391,8 @@ var pveapi = [ "enum" : [ "vm", "storage", - "node" + "node", + "sdn" ], "optional" : 1, "type" : "string" @@ -4341,7 +6483,8 @@ var pveapi = [ "pool", "qemu", "lxc", - "openvz" + "openvz", + "sdn" ], "type" : "string" }, @@ -4365,6 +6508,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List recent tasks (cluster wide).", "method" : "GET", "name" : "tasks", @@ -4394,6 +6538,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get datacenter options.", "method" : "GET", "name" : "get_options", @@ -4414,6 +6559,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set datacenter options.", "method" : "PUT", "name" : "set_options", @@ -4424,35 +6570,35 @@ var pveapi = [ "description" : "Set bandwidth/io limits various operations.", "format" : { "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", + "description" : "bandwidth limit in KiB/s for cloning disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "default" : { - "description" : "default bandwidth limit in MiB/s", + "description" : "default bandwidth limit in KiB/s", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", + "description" : "bandwidth limit in KiB/s for moving disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", + "description" : "bandwidth limit in KiB/s for restoring guests from backups", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, @@ -4499,6 +6645,26 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "ha" : { + "description" : "Cluster wide HA settings.", + "format" : { + "shutdown_policy" : { + "default" : "conditional", + "description" : "The policy for HA services on node shutdown. 'freeze' disables auto-recovery, 'failover' ensures recovery, 'conditional' recovers on poweroff and freezes on reboot. 'migrate' will migrate running services to other nodes, if possible. With 'freeze' or 'failover', HA Services will always get stopped first on shutdown.", + "enum" : [ + "freeze", + "failover", + "conditional", + "migrate" + ], + "type" : "string", + "verbose_description" : "Describes the policy for handling HA services on poweroff or reboot of a node. Freeze will always freeze services which are still located on the node on shutdown, those services won't be recovered by the HA manager. Failover will not mark the services as frozen and thus the services will get recovered to other nodes, if the shutdown node does not come up again quickly (< 1min). 'conditional' chooses automatically depending on the type of shutdown, i.e., on a reboot the service will be frozen but on a poweroff the service will stay as is, and thus get recovered after about 2 minutes. Migrate will try to move all running services to another node when a reboot or shutdown was triggered. The poweroff process will only continue once no running services are located on the node anymore. If the node comes up again, the service will be moved back to the previously powered-off node, at least if no other migration, reloaction or recovery took place." + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "shutdown_policy=" + }, "http_proxy" : { "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')", "optional" : 1, @@ -4540,34 +6706,37 @@ var pveapi = [ "language" : { "description" : "Default GUI language.", "enum" : [ - "zh_CN", - "zh_TW", "ca", + "da", + "de", "en", + "es", "eu", + "fa", "fr", - "de", + "he", "it", - "es", "ja", "nb", "nn", - "fa", "pl", "pt_BR", "ru", "sl", "sv", - "tr" + "tr", + "zh_CN", + "zh_TW" ], "optional" : 1, "type" : "string" }, "mac_prefix" : { "description" : "Prefix for autogenerated MAC addresses.", + "format" : "mac-prefix", "optional" : 1, - "pattern" : "(?^i:[a-f0-9]{2}(?::[a-f0-9]{2}){0,2}:?)", - "type" : "string" + "type" : "string", + "typetext" : "" }, "max_workers" : { "description" : "Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.", @@ -4606,6 +6775,26 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "" + }, + "u2f" : { + "description" : "u2f", + "format" : { + "appid" : { + "description" : "U2F AppId URL override. Defaults to the origin.", + "format_description" : "APPID", + "optional" : 1, + "type" : "string" + }, + "origin" : { + "description" : "U2F Origin override. Mostly useful for single nodes with a single URL.", + "format_description" : "URL", + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[appid=] [,origin=]" } } }, @@ -4631,7 +6820,8 @@ var pveapi = [ { "info" : { "GET" : { - "description" : "Get cluster status informations.", + "allowtoken" : 1, + "description" : "Get cluster status information.", "method" : "GET", "name" : "get_status", "parameters" : { @@ -4650,8 +6840,59 @@ var pveapi = [ "returns" : { "items" : { "properties" : { + "id" : { + "type" : "string" + }, + "ip" : { + "description" : "[node] IP of the resolved nodename.", + "optional" : 1, + "type" : "string" + }, + "level" : { + "description" : "[node] Proxmox VE Subscription level, indicates if eligible for enterprise support as well as access to the stable Proxmox VE Enterprise Repository.", + "optional" : 1, + "type" : "string" + }, + "local" : { + "description" : "[node] Indicates if this is the responding node.", + "optional" : 1, + "type" : "boolean" + }, + "name" : { + "type" : "string" + }, + "nodeid" : { + "description" : "[node] ID of the node from the corosync configuration.", + "optional" : 1, + "type" : "integer" + }, + "nodes" : { + "description" : "[cluster] Nodes count, including offline nodes.", + "optional" : 1, + "type" : "integer" + }, + "online" : { + "description" : "[node] Indicates if the node is online or offline.", + "optional" : 1, + "type" : "boolean" + }, + "quorate" : { + "description" : "[cluster] Indicates if there is a majority of nodes online to make decisions", + "optional" : 1, + "type" : "boolean" + }, "type" : { + "description" : "Indicates the type, either cluster or node. The type defines the object properties e.g. quorate available for type cluster.", + "enum" : [ + "cluster", + "node" + ], "type" : "string" + }, + "version" : { + "description" : "[cluster] Current version of the corosync configuration file.", + "optional" : 1, + "type" : "integer" } }, "type" : "object" @@ -4667,6 +6908,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get next free VMID. If you pass an VMID it will raise an error if the ID is already used.", "method" : "GET", "name" : "nextid", @@ -4699,6 +6941,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Cluster index.", "method" : "GET", "name" : "index", @@ -4742,6 +6985,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -4793,6 +7037,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -4860,9 +7105,25 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "optional" : 1, - "type" : "integer" + "type" : "string" }, "pos" : { "type" : "integer" @@ -4887,6 +7148,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -4951,6 +7213,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -5041,6 +7319,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -5091,6 +7370,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -5148,6 +7428,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -5233,6 +7529,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network alias.", "method" : "DELETE", "name" : "remove_alias", @@ -5283,6 +7580,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read alias.", "method" : "GET", "name" : "read_alias", @@ -5325,6 +7623,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network alias.", "method" : "PUT", "name" : "update_alias", @@ -5401,6 +7700,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List aliases", "method" : "GET", "name" : "get_aliases", @@ -5463,6 +7763,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create IP or Network Alias.", "method" : "POST", "name" : "create_alias", @@ -5528,6 +7829,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network from IPSet.", "method" : "DELETE", "name" : "remove_ip", @@ -5584,6 +7886,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read IP or Network settings from IPSet.", "method" : "GET", "name" : "read_ip", @@ -5633,6 +7936,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network settings", "method" : "PUT", "name" : "update_ip", @@ -5706,6 +8010,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete IPSet", "method" : "DELETE", "name" : "delete_ipset", @@ -5749,6 +8054,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List IPSet content", "method" : "GET", "name" : "get_ipset", @@ -5819,6 +8125,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add IP or Network to IPSet.", "method" : "POST", "name" : "create_ip", @@ -5885,6 +8192,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List IPSets", "method" : "GET", "name" : "ipset_index", @@ -5948,6 +8256,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new IPSet", "method" : "POST", "name" : "create_ipset", @@ -6018,6 +8327,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get VM firewall options.", "method" : "GET", "name" : "get_options", @@ -6052,11 +8362,13 @@ var pveapi = [ "returns" : { "properties" : { "dhcp" : { + "default" : 0, "description" : "Enable DHCP.", "optional" : 1, "type" : "boolean" }, "enable" : { + "default" : 0, "description" : "Enable/disable firewall rules.", "optional" : 1, "type" : "boolean" @@ -6099,12 +8411,14 @@ var pveapi = [ "type" : "string" }, "macfilter" : { + "default" : 0, "description" : "Enable/disable MAC address filter.", "optional" : 1, "type" : "boolean" }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", "optional" : 1, "type" : "boolean" }, @@ -6138,6 +8452,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set Firewall options.", "method" : "PUT", "name" : "set_options", @@ -6152,6 +8467,7 @@ var pveapi = [ "typetext" : "" }, "dhcp" : { + "default" : 0, "description" : "Enable DHCP.", "optional" : 1, "type" : "boolean", @@ -6165,6 +8481,7 @@ var pveapi = [ "typetext" : "" }, "enable" : { + "default" : 0, "description" : "Enable/disable firewall rules.", "optional" : 1, "type" : "boolean", @@ -6209,13 +8526,15 @@ var pveapi = [ "type" : "string" }, "macfilter" : { + "default" : 0, "description" : "Enable/disable MAC address filter.", "optional" : 1, "type" : "boolean", "typetext" : "" }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -6284,6 +8603,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read firewall log", "method" : "GET", "name" : "log", @@ -6353,6 +8673,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", "method" : "GET", "name" : "refs", @@ -6423,6 +8744,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -6471,6 +8793,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute fsfreeze-freeze.", "method" : "POST", "name" : "fsfreeze-freeze", @@ -6516,6 +8839,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute fsfreeze-status.", "method" : "POST", "name" : "fsfreeze-status", @@ -6561,6 +8885,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute fsfreeze-thaw.", "method" : "POST", "name" : "fsfreeze-thaw", @@ -6606,6 +8931,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute fstrim.", "method" : "POST", "name" : "fstrim", @@ -6651,6 +8977,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-fsinfo.", "method" : "GET", "name" : "get-fsinfo", @@ -6696,6 +9023,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-host-name.", "method" : "GET", "name" : "get-host-name", @@ -6741,6 +9069,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-memory-block-info.", "method" : "GET", "name" : "get-memory-block-info", @@ -6786,6 +9115,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-memory-blocks.", "method" : "GET", "name" : "get-memory-blocks", @@ -6831,6 +9161,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-osinfo.", "method" : "GET", "name" : "get-osinfo", @@ -6876,6 +9207,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-time.", "method" : "GET", "name" : "get-time", @@ -6921,6 +9253,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-timezone.", "method" : "GET", "name" : "get-timezone", @@ -6966,6 +9299,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-users.", "method" : "GET", "name" : "get-users", @@ -7011,6 +9345,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute get-vcpus.", "method" : "GET", "name" : "get-vcpus", @@ -7056,6 +9391,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute info.", "method" : "GET", "name" : "info", @@ -7101,6 +9437,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Execute network-get-interfaces.", "method" : "GET", "name" : "network-get-interfaces", @@ -7146,6 +9483,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute ping.", "method" : "POST", "name" : "ping", @@ -7191,6 +9529,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute shutdown.", "method" : "POST", "name" : "shutdown", @@ -7236,6 +9575,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute suspend-disk.", "method" : "POST", "name" : "suspend-disk", @@ -7281,6 +9621,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute suspend-hybrid.", "method" : "POST", "name" : "suspend-hybrid", @@ -7326,6 +9667,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute suspend-ram.", "method" : "POST", "name" : "suspend-ram", @@ -7371,6 +9713,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Sets the password for the given user to the given password", "method" : "POST", "name" : "set-user-password", @@ -7392,7 +9735,7 @@ var pveapi = [ }, "password" : { "description" : "The new password.", - "maxLength" : 64, + "maxLength" : 1024, "minLength" : 5, "type" : "string", "typetext" : "" @@ -7435,6 +9778,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Executes the given command in the vm via the guest-agent and returns an object with the pid.", "method" : "POST", "name" : "exec", @@ -7444,6 +9788,14 @@ var pveapi = [ "command" : { "description" : "The command as a list of program + arguments", "format" : "string-alist", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "input-data" : { + "description" : "Data to pass as 'input-data' to the guest. Usually treated as STDIN to 'command'.", + "maxLength" : 65536, + "optional" : 1, "type" : "string", "typetext" : "" }, @@ -7491,6 +9843,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Gets the status of the given pid started by the guest-agent", "method" : "GET", "name" : "exec-status", @@ -7576,6 +9929,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Reads the given file via guest agent. Is limited to 16777216 bytes.", "method" : "GET", "name" : "file-read", @@ -7637,6 +9991,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Writes the given file via guest agent.", "method" : "POST", "name" : "file-write", @@ -7692,6 +10047,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Qemu Agent command index.", "method" : "GET", "name" : "index", @@ -7733,6 +10089,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Execute Qemu Guest Agent commands.", "method" : "POST", "name" : "agent", @@ -7804,6 +10161,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read VM RRD statistics (returns PNG)", "method" : "GET", "name" : "rrd", @@ -7878,6 +10236,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read VM RRD statistics", "method" : "GET", "name" : "rrddata", @@ -7945,7 +10304,8 @@ var pveapi = [ { "info" : { "GET" : { - "description" : "Get current virtual machine configuration. This does not include pending configuration changes (see 'pending' API).", + "allowtoken" : 1, + "description" : "Get the virtual machine configuration with pending configuration changes applied. Set the 'current' parameter to get the current configuration instead.", "method" : "GET", "name" : "vm_config", "parameters" : { @@ -7964,6 +10324,14 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "snapshot" : { + "description" : "Fetch config values from given snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -7984,7 +10352,7 @@ var pveapi = [ }, "proxyto" : "node", "returns" : { - "description" : "The current VM configuration.", + "description" : "The VM configuration.", "properties" : { "acpi" : { "default" : 1, @@ -8006,6 +10374,16 @@ var pveapi = [ "description" : "Run fstrim after cloning/moving a disk.", "optional" : 1, "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" } }, "optional" : 1, @@ -8026,6 +10404,31 @@ var pveapi = [ "type" : "string", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -8069,6 +10472,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -8097,72 +10506,7 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl', 'ibpb', 'ssbd', 'virt-ssbd', 'amd-ssbd', 'amd-no-ssb', 'pdpe1gb'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb))(;(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string" }, @@ -8236,12 +10580,18 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -8572,6 +10922,13 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, @@ -8583,6 +10940,25 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string" + }, "keyboard" : { "default" : null, "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", @@ -8630,10 +11006,15 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" @@ -8642,7 +11023,7 @@ var pveapi = [ "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?|virt(?:-\\d+\\.\\d+)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -8685,6 +11066,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -8727,10 +11109,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -8872,7 +11255,7 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", @@ -8893,6 +11276,35 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -9197,13 +11609,20 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -9523,6 +11942,13 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, @@ -9565,7 +11991,7 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string" }, @@ -9583,6 +12009,30 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -9611,6 +12061,12 @@ var pveapi = [ "type" : "boolean", "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string" + }, "tdf" : { "default" : 0, "description" : "Enable/disable time drift fix.", @@ -9625,7 +12081,18 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string" }, @@ -9641,7 +12108,7 @@ var pveapi = [ }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -9676,6 +12143,7 @@ var pveapi = [ "qxl2", "qxl3", "qxl4", + "none", "serial0", "serial1", "serial2", @@ -10028,6 +12496,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Set virtual machine options (asynchrounous API).", "method" : "POST", "name" : "update_vm_async", @@ -10055,11 +12524,21 @@ var pveapi = [ "description" : "Run fstrim after cloning/moving a disk.", "optional" : 1, "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>]" + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" }, "arch" : { "description" : "Virtual processor architecture. Defaults to the host.", @@ -10077,6 +12556,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -10130,6 +12635,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -10161,75 +12673,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl', 'ibpb', 'ssbd', 'virt-ssbd', 'amd-ssbd', 'amd-no-ssb', 'pdpe1gb'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb))(;(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "" }, "cpulimit" : { "default" : 0, @@ -10323,13 +12770,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", "typetext" : "[host=] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -10661,11 +13115,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", @@ -10674,6 +13135,26 @@ var pveapi = [ "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, "keyboard" : { "default" : null, "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", @@ -10723,10 +13204,15 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" @@ -10735,7 +13221,7 @@ var pveapi = [ "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?|virt(?:-\\d+\\.\\d+)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -10783,6 +13269,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -10825,10 +13312,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -10980,7 +13468,7 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", @@ -11010,6 +13498,36 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -11314,14 +13832,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -11641,11 +14166,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -11692,10 +14224,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -11713,6 +14245,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -11743,6 +14300,13 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "tdf" : { "default" : 0, "description" : "Enable/disable time drift fix.", @@ -11759,10 +14323,21 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", @@ -11776,7 +14351,7 @@ var pveapi = [ }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -11813,6 +14388,7 @@ var pveapi = [ "qxl2", "qxl3", "qxl4", + "none", "serial0", "serial1", "serial2", @@ -12198,6 +14774,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set virtual machine options (synchrounous API) - You should consider using the POST method instead for any actions involving hotplug or storage allocation.", "method" : "PUT", "name" : "update_vm", @@ -12225,11 +14802,21 @@ var pveapi = [ "description" : "Run fstrim after cloning/moving a disk.", "optional" : 1, "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>]" + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" }, "arch" : { "description" : "Virtual processor architecture. Defaults to the host.", @@ -12247,6 +14834,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -12292,6 +14905,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -12323,75 +14943,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl', 'ibpb', 'ssbd', 'virt-ssbd', 'amd-ssbd', 'amd-no-ssb', 'pdpe1gb'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb))(;(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "" }, "cpulimit" : { "default" : 0, @@ -12485,13 +15040,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", "typetext" : "[host=] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -12823,11 +15385,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", @@ -12836,6 +15405,26 @@ var pveapi = [ "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, "keyboard" : { "default" : null, "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", @@ -12885,10 +15474,15 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" @@ -12897,7 +15491,7 @@ var pveapi = [ "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?|virt(?:-\\d+\\.\\d+)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -12945,6 +15539,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -12987,10 +15582,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -13142,7 +15738,7 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", @@ -13172,6 +15768,36 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -13476,14 +16102,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -13803,11 +16436,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -13854,10 +16494,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -13875,6 +16515,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -13905,6 +16570,13 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "tdf" : { "default" : 0, "description" : "Enable/disable time drift fix.", @@ -13921,10 +16593,21 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", @@ -13938,7 +16621,7 @@ var pveapi = [ }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -13975,6 +16658,7 @@ var pveapi = [ "qxl2", "qxl3", "qxl4", + "none", "serial0", "serial1", "serial2", @@ -14366,7 +17050,8 @@ var pveapi = [ { "info" : { "GET" : { - "description" : "Get virtual machine configuration, including pending changes.", + "allowtoken" : 1, + "description" : "Get the virtual machine configuration with both current and pending values.", "method" : "GET", "name" : "vm_pending", "parameters" : { @@ -14435,6 +17120,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Unlink/delete disk images.", "method" : "PUT", "name" : "unlink", @@ -14491,6 +17177,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP VNC proxy connections.", "method" : "POST", "name" : "vncproxy", @@ -14557,6 +17244,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP proxy connections.", "method" : "POST", "name" : "termproxy", @@ -14625,6 +17313,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Opens a weksocket for VNC traffic.", "method" : "GET", "name" : "vncwebsocket", @@ -14686,6 +17375,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Returns a SPICE configuration to connect to the VM.", "method" : "POST", "name" : "spiceproxy", @@ -14757,6 +17447,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get virtual machine status.", "method" : "GET", "name" : "vm_status", @@ -14805,6 +17496,11 @@ var pveapi = [ "description" : "HA manager service status.", "type" : "object" }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, "maxdisk" : { "description" : "Root disk size in bytes.", "optional" : 1, @@ -14845,6 +17541,11 @@ var pveapi = [ ], "type" : "string" }, + "tags" : { + "description" : "The current configured tags, if any", + "optional" : 1, + "type" : "string" + }, "uptime" : { "description" : "Uptime.", "optional" : 1, @@ -14869,17 +17570,24 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Start virtual machine.", "method" : "POST", "name" : "vm_start", "parameters" : { "additionalProperties" : 0, "properties" : { + "force-cpu" : { + "description" : "Override QEMU's -cpu argument with the given string.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "machine" : { "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?|virt(?:-\\d+\\.\\d+)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "migratedfrom" : { @@ -14925,11 +17633,20 @@ var pveapi = [ "typetext" : "" }, "targetstorage" : { - "description" : "Target storage for the migration. (Can be '1' to use the same storage id as on the source node.)", + "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.", + "format" : "storagepair-list", "optional" : 1, "type" : "string", "typetext" : "" }, + "timeout" : { + "default" : "max(30, vm memory in GiB)", + "description" : "Wait maximal timeout seconds.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -14962,6 +17679,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop virtual machine. The qemu process will exit immediately. Thisis akin to pulling the power plug of a running computer and may damage the VM data", "method" : "POST", "name" : "vm_stop", @@ -15033,6 +17751,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Reset virtual machine.", "method" : "POST", "name" : "vm_reset", @@ -15083,6 +17802,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Shutdown virtual machine. This is similar to pressing the power button on a physical machine.This will send an ACPI event for the guest OS, which should then proceed to a clean shutdown.", "method" : "POST", "name" : "vm_shutdown", @@ -15154,6 +17874,59 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, + "description" : "Reboot the VM by shutting it down, and starting it again. Applies pending changes.", + "method" : "POST", + "name" : "vm_reboot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "description" : "Wait maximal timeout seconds for the shutdown.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/status/reboot", + "text" : "reboot" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, "description" : "Suspend virtual machine.", "method" : "POST", "name" : "vm_suspend", @@ -15172,6 +17945,21 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "statestorage" : { + "description" : "The storage for the VM state", + "format" : "pve-storage-id", + "optional" : 1, + "requires" : "todisk", + "type" : "string", + "typetext" : "" + }, + "todisk" : { + "default" : 0, + "description" : "If set, suspends the VM to disk. Will be resumed on next VM start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -15188,7 +17976,8 @@ var pveapi = [ [ "VM.PowerMgmt" ] - ] + ], + "description" : "You need 'VM.PowerMgmt' on /vms/{vmid}, and if you have set 'todisk', you need also 'VM.Config.Disk' on /vms/{vmid} and 'Datastore.AllocateSpace' on the storage for the vmstate." }, "protected" : 1, "proxyto" : "node", @@ -15204,6 +17993,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Resume virtual machine.", "method" : "POST", "name" : "vm_resume", @@ -15259,6 +18049,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmcmdidx", @@ -15310,6 +18101,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Send key event to virtual machine.", "method" : "PUT", "name" : "vm_sendkey", @@ -15365,6 +18157,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Check if feature for virtual machine is available.", "method" : "GET", "name" : "vm_feature", @@ -15437,12 +18230,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a copy of virtual machine/template.", "method" : "POST", "name" : "clone_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "description" : { "description" : "Description for the new VM.", "optional" : 1, @@ -15569,12 +18371,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Move volume to different storage.", "method" : "POST", "name" : "move_vm_disk", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "move limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "delete" : { "default" : 0, "description" : "Delete the original disk after successful copy. By default the original disk is kept as unused disk.", @@ -15610,6 +18421,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -15701,13 +18529,90 @@ var pveapi = [ }, { "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get preconditions for migration.", + "method" : "GET", + "name" : "migrate_vm_precondition", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "target" : { + "description" : "Target node.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Migrate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "allowed_nodes" : { + "description" : "List nodes allowed for offline migration, only passed if VM is offline", + "optional" : 1, + "type" : "array" + }, + "local_disks" : { + "description" : "List local disks including CD-Rom, unsused and not referenced disks", + "type" : "array" + }, + "local_resources" : { + "description" : "List local resources e.g. pci, usb", + "type" : "array" + }, + "not_allowed_nodes" : { + "description" : "List not allowed nodes with additional informations, only passed if VM is offline", + "optional" : 1, + "type" : "object" + }, + "running" : { + "type" : "boolean" + } + }, + "type" : "object" + } + }, "POST" : { + "allowtoken" : 1, "description" : "Migrate virtual machine. Creates a new migration task.", "method" : "POST", "name" : "migrate_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "migrate limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "force" : { "description" : "Allow to migrate VMs which use local devices. Only root may use this option.", "optional" : 1, @@ -15737,7 +18642,7 @@ var pveapi = [ "typetext" : "" }, "online" : { - "description" : "Use online/live migration.", + "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -15749,8 +18654,8 @@ var pveapi = [ "typetext" : "" }, "targetstorage" : { - "description" : "Default target storage.", - "format" : "pve-storage-id", + "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.", + "format" : "storagepair-list", "optional" : 1, "type" : "string", "typetext" : "" @@ -15794,6 +18699,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute Qemu monitor commands.", "method" : "POST", "name" : "monitor", @@ -15844,6 +18750,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Extend volume size.", "method" : "PUT", "name" : "resize_vm", @@ -15878,6 +18785,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -15957,6 +18881,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get snapshot configuration", "method" : "GET", "name" : "get_snapshot_config", @@ -15991,7 +18916,8 @@ var pveapi = [ "/vms/{vmid}", [ "VM.Snapshot", - "VM.Snapshot.Rollback" + "VM.Snapshot.Rollback", + "VM.Audit" ], "any", 1 @@ -16003,6 +18929,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update snapshot metadata.", "method" : "PUT", "name" : "update_snapshot_config", @@ -16060,6 +18987,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Rollback VM state to specified snapshot.", "method" : "POST", "name" : "rollback", @@ -16115,6 +19043,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete a VM snapshot.", "method" : "DELETE", "name" : "delsnapshot", @@ -16166,6 +19095,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "", "method" : "GET", "name" : "snapshot_cmd_idx", @@ -16219,6 +19149,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List all snapshots.", "method" : "GET", "name" : "snapshot_list", @@ -16291,6 +19222,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Snapshot a VM.", "method" : "POST", "name" : "snapshot", @@ -16355,6 +19287,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a Template.", "method" : "POST", "name" : "template", @@ -16382,6 +19315,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -16444,10 +19394,71 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/qemu/{vmid}/template", "text" : "template" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get automatically generated cloudinit config.", + "method" : "GET", + "name" : "cloudinit_generated_config_dump", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Config type.", + "enum" : [ + "user", + "network", + "meta" + ], + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/cloudinit/dump", + "text" : "dump" + } + ], + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/cloudinit", + "text" : "cloudinit" } ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy the vm (also delete all used/owned volumes).", "method" : "DELETE", "name" : "destroy_vm", @@ -16460,6 +19471,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "purge" : { + "description" : "Remove vmid from backup cron jobs.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "skiplock" : { "description" : "Ignore locks - only root is allowed to use this option.", "optional" : 1, @@ -16491,6 +19508,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmdiridx", @@ -16542,6 +19560,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Virtual machine index (per node).", "method" : "GET", "name" : "vmlist", @@ -16576,6 +19595,11 @@ var pveapi = [ "optional" : 1, "type" : "number" }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, "maxdisk" : { "description" : "Root disk size in bytes.", "optional" : 1, @@ -16611,6 +19635,11 @@ var pveapi = [ ], "type" : "string" }, + "tags" : { + "description" : "The current configured tags, if any", + "optional" : 1, + "type" : "string" + }, "uptime" : { "description" : "Uptime.", "optional" : 1, @@ -16636,6 +19665,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create or restore a virtual machine.", "method" : "POST", "name" : "create_vm", @@ -16663,11 +19693,21 @@ var pveapi = [ "description" : "Run fstrim after cloning/moving a disk.", "optional" : 1, "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>]" + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" }, "arch" : { "description" : "Virtual processor architecture. Defaults to the host.", @@ -16679,7 +19719,7 @@ var pveapi = [ "type" : "string" }, "archive" : { - "description" : "The backup file.", + "description" : "The backup archive. Either the file system path to a .tar or .vma file (use '-' to pipe data from stdin) or a proxmox storage backup volume identifier.", "maxLength" : 255, "optional" : 1, "type" : "string", @@ -16692,6 +19732,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -16731,7 +19797,8 @@ var pveapi = [ "type" : "string" }, "bwlimit" : { - "description" : "Override i/o bandwidth limit (in KiB/s).", + "default" : "restore limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", "minimum" : "0", "optional" : 1, "type" : "integer", @@ -16744,6 +19811,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -16775,75 +19849,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl', 'ibpb', 'ssbd', 'virt-ssbd', 'amd-ssbd', 'amd-no-ssb', 'pdpe1gb'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb))(;(?^:[+-](pcid|spec-ctrl|ibpb|ssbd|virt-ssbd|amd-ssbd|amd-no-ssb|pdpe1gb)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "" }, "cpulimit" : { "default" : 0, @@ -16923,13 +19932,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", "typetext" : "[host=] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -17261,11 +20277,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", @@ -17274,6 +20297,26 @@ var pveapi = [ "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, "keyboard" : { "default" : null, "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", @@ -17323,10 +20366,15 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" @@ -17335,7 +20383,7 @@ var pveapi = [ "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?|virt(?:-\\d+\\.\\d+)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -17383,6 +20431,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -17425,10 +20474,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -17580,7 +20630,7 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", @@ -17610,6 +20660,36 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -17914,14 +20994,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -18241,11 +21328,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -18286,10 +21380,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -18307,6 +21401,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -18351,6 +21470,13 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "tdf" : { "default" : 0, "description" : "Enable/disable time drift fix.", @@ -18374,10 +21500,21 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", @@ -18391,7 +21528,7 @@ var pveapi = [ }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -18428,6 +21565,7 @@ var pveapi = [ "qxl2", "qxl3", "qxl4", + "none", "serial0", "serial1", "serial2", @@ -18810,18 +21948,34 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get container configuration.", "method" : "GET", "name" : "vm_config", "parameters" : { "additionalProperties" : 0, "properties" : { + "current" : { + "default" : 0, + "description" : "Get current values (instead of pending values).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, + "snapshot" : { + "description" : "Fetch config values from given snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -18907,6 +22061,12 @@ var pveapi = [ "features" : { "description" : "Allow containers access to advanced features.", "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, "fuse" : { "default" : 0, "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", @@ -18919,11 +22079,17 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, "mount" : { "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", "format_description" : "fstype;fstype;...", "optional" : 1, - "pattern" : "(?^:[a-zA-Z0-9; ]+)", + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", "type" : "string" }, "nesting" : { @@ -18936,6 +22102,12 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string" + }, "hostname" : { "description" : "Set a host name for the container.", "format" : "dns-name", @@ -18947,7 +22119,10 @@ var pveapi = [ "description" : "Lock/unlock the VM.", "enum" : [ "backup", + "create", + "destroyed", "disk", + "fstrim", "migrate", "mounted", "rollback", @@ -18989,6 +22164,13 @@ var pveapi = [ "type" : "boolean", "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "mp" : { "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", "format" : "pve-lxc-mp-string", @@ -19074,10 +22256,11 @@ var pveapi = [ }, "hwaddr" : { "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:(?:[a-f0-9]{2}:){5}[a-f0-9]{2})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "ip" : { "description" : "IPv4 address in CIDR format.", @@ -19173,6 +22356,13 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "quota" : { "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", "optional" : 1, @@ -19234,6 +22424,12 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string" + }, "template" : { "default" : 0, "description" : "Enable/disable Template.", @@ -19256,7 +22452,15 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, "optional" : 1, "type" : "string" } @@ -19265,6 +22469,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set container options.", "method" : "PUT", "name" : "update_vm", @@ -19350,6 +22555,12 @@ var pveapi = [ "features" : { "description" : "Allow containers access to advanced features.", "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, "fuse" : { "default" : 0, "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", @@ -19362,11 +22573,17 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, "mount" : { "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", "format_description" : "fstype;fstype;...", "optional" : 1, - "pattern" : "(?^:[a-zA-Z0-9; ]+)", + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", "type" : "string" }, "nesting" : { @@ -19378,7 +22595,14 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[fuse=<1|0>] [,keyctl=<1|0>] [,mount=] [,nesting=<1|0>]" + "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=] [,nesting=<1|0>]" + }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "hostname" : { "description" : "Set a host name for the container.", @@ -19392,7 +22616,10 @@ var pveapi = [ "description" : "Lock/unlock the VM.", "enum" : [ "backup", + "create", + "destroyed", "disk", + "fstrim", "migrate", "mounted", "rollback", @@ -19424,6 +22651,13 @@ var pveapi = [ "type" : "boolean", "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "mp" : { "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", "format" : "pve-lxc-mp-string", @@ -19471,7 +22705,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" }, "nameserver" : { "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", @@ -19511,10 +22745,11 @@ var pveapi = [ }, "hwaddr" : { "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:(?:[a-f0-9]{2}:){5}[a-f0-9]{2})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "ip" : { "description" : "IPv4 address in CIDR format.", @@ -19611,6 +22846,13 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "revert" : { + "description" : "Revert a pending change.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "rootfs" : { "description" : "Use volume as container root.", "format" : { @@ -19619,6 +22861,13 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "quota" : { "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", "optional" : 1, @@ -19659,7 +22908,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[volume=] [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + "typetext" : "[volume=] [,acl=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" }, "searchdomain" : { "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", @@ -19683,6 +22932,13 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "template" : { "default" : 0, "description" : "Enable/disable Template.", @@ -19708,10 +22964,18 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[volume=]" }, "vmid" : { "description" : "The (unique) ID of the VM.", @@ -19754,6 +23018,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get virtual machine status.", "method" : "GET", "name" : "vm_status", @@ -19797,6 +23062,11 @@ var pveapi = [ "description" : "HA manager service status.", "type" : "object" }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, "maxdisk" : { "description" : "Root disk size in bytes.", "optional" : 1, @@ -19828,6 +23098,11 @@ var pveapi = [ ], "type" : "string" }, + "tags" : { + "description" : "The current configured tags, if any.", + "optional" : 1, + "type" : "string" + }, "uptime" : { "description" : "Uptime.", "optional" : 1, @@ -19852,6 +23127,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Start the container.", "method" : "POST", "name" : "vm_start", @@ -19902,6 +23178,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop the container. This will abruptly stop all processes running in the container.", "method" : "POST", "name" : "vm_stop", @@ -19952,6 +23229,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Shutdown the container. This will trigger a clean shutdown of the container, see lxc-stop(1) for details.", "method" : "POST", "name" : "vm_shutdown", @@ -20011,6 +23289,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Suspend the container.", "method" : "POST", "name" : "vm_suspend", @@ -20055,6 +23334,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Resume the container.", "method" : "POST", "name" : "vm_resume", @@ -20095,10 +23375,63 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/lxc/{vmid}/status/resume", "text" : "resume" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Reboot the container by shutting it down, and starting it again. Applies pending changes.", + "method" : "POST", + "name" : "vm_reboot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "description" : "Wait maximal timeout seconds for the shutdown.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/reboot", + "text" : "reboot" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmcmdidx", @@ -20154,6 +23487,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Rollback LXC state to specified snapshot.", "method" : "POST", "name" : "rollback", @@ -20209,6 +23543,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get snapshot configuration", "method" : "GET", "name" : "get_snapshot_config", @@ -20243,7 +23578,8 @@ var pveapi = [ "/vms/{vmid}", [ "VM.Snapshot", - "VM.Snapshot.Rollback" + "VM.Snapshot.Rollback", + "VM.Audit" ], "any", 1 @@ -20255,6 +23591,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update snapshot metadata.", "method" : "PUT", "name" : "update_snapshot_config", @@ -20312,6 +23649,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete a LXC snapshot.", "method" : "DELETE", "name" : "delsnapshot", @@ -20363,6 +23701,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "", "method" : "GET", "name" : "snapshot_cmd_idx", @@ -20416,6 +23755,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List all snapshots.", "method" : "GET", "name" : "list", @@ -20483,6 +23823,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Snapshot a container.", "method" : "POST", "name" : "snapshot", @@ -20545,6 +23886,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -20596,6 +23938,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -20663,9 +24006,25 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "optional" : 1, - "type" : "integer" + "type" : "string" }, "pos" : { "type" : "integer" @@ -20690,6 +24049,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -20754,6 +24114,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -20844,6 +24220,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -20894,6 +24271,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -20951,6 +24329,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -21036,6 +24430,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network alias.", "method" : "DELETE", "name" : "remove_alias", @@ -21086,6 +24481,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read alias.", "method" : "GET", "name" : "read_alias", @@ -21128,6 +24524,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network alias.", "method" : "PUT", "name" : "update_alias", @@ -21204,6 +24601,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List aliases", "method" : "GET", "name" : "get_aliases", @@ -21266,6 +24664,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create IP or Network Alias.", "method" : "POST", "name" : "create_alias", @@ -21331,6 +24730,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network from IPSet.", "method" : "DELETE", "name" : "remove_ip", @@ -21387,6 +24787,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read IP or Network settings from IPSet.", "method" : "GET", "name" : "read_ip", @@ -21436,6 +24837,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network settings", "method" : "PUT", "name" : "update_ip", @@ -21509,6 +24911,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete IPSet", "method" : "DELETE", "name" : "delete_ipset", @@ -21552,6 +24955,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List IPSet content", "method" : "GET", "name" : "get_ipset", @@ -21622,6 +25026,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add IP or Network to IPSet.", "method" : "POST", "name" : "create_ip", @@ -21688,6 +25093,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List IPSets", "method" : "GET", "name" : "ipset_index", @@ -21751,6 +25157,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new IPSet", "method" : "POST", "name" : "create_ipset", @@ -21821,6 +25228,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get VM firewall options.", "method" : "GET", "name" : "get_options", @@ -21855,11 +25263,13 @@ var pveapi = [ "returns" : { "properties" : { "dhcp" : { + "default" : 0, "description" : "Enable DHCP.", "optional" : 1, "type" : "boolean" }, "enable" : { + "default" : 0, "description" : "Enable/disable firewall rules.", "optional" : 1, "type" : "boolean" @@ -21902,12 +25312,14 @@ var pveapi = [ "type" : "string" }, "macfilter" : { + "default" : 0, "description" : "Enable/disable MAC address filter.", "optional" : 1, "type" : "boolean" }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", "optional" : 1, "type" : "boolean" }, @@ -21941,6 +25353,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set Firewall options.", "method" : "PUT", "name" : "set_options", @@ -21955,6 +25368,7 @@ var pveapi = [ "typetext" : "" }, "dhcp" : { + "default" : 0, "description" : "Enable DHCP.", "optional" : 1, "type" : "boolean", @@ -21968,6 +25382,7 @@ var pveapi = [ "typetext" : "" }, "enable" : { + "default" : 0, "description" : "Enable/disable firewall rules.", "optional" : 1, "type" : "boolean", @@ -22012,13 +25427,15 @@ var pveapi = [ "type" : "string" }, "macfilter" : { + "default" : 0, "description" : "Enable/disable MAC address filter.", "optional" : 1, "type" : "boolean", "typetext" : "" }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -22087,6 +25504,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read firewall log", "method" : "GET", "name" : "log", @@ -22156,6 +25574,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", "method" : "GET", "name" : "refs", @@ -22226,6 +25645,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -22272,6 +25692,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read VM RRD statistics (returns PNG)", "method" : "GET", "name" : "rrd", @@ -22346,6 +25767,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read VM RRD statistics", "method" : "GET", "name" : "rrddata", @@ -22413,6 +25835,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP VNC proxy connections.", "method" : "POST", "name" : "vncproxy", @@ -22495,6 +25918,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP proxy connection.", "method" : "POST", "name" : "termproxy", @@ -22552,6 +25976,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Opens a weksocket for VNC traffic.", "method" : "GET", "name" : "vncwebsocket", @@ -22613,6 +26038,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Returns a SPICE configuration to connect to the CT.", "method" : "POST", "name" : "spiceproxy", @@ -22682,12 +26108,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Migrate the container to another node. Creates a new migration task.", "method" : "POST", "name" : "migrate_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "migrate limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" + }, "force" : { "description" : "Force migration despite local bind / device mounts. NOTE: deprecated, use 'shared' property of mount point instead.", "optional" : 1, @@ -22758,6 +26193,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Check if feature for virtual machine is available.", "method" : "GET", "name" : "vm_feature", @@ -22824,6 +26260,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a Template.", "method" : "POST", "name" : "template", @@ -22869,12 +26306,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a container clone/copy", "method" : "POST", "name" : "clone_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" + }, "description" : { "description" : "Description for the new CT.", "optional" : 1, @@ -22991,6 +26437,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Resize a container mount point.", "method" : "PUT", "name" : "resize_vm", @@ -23313,12 +26760,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Move a rootfs-/mp-volume to a different storage", "method" : "POST", "name" : "move_volume", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" + }, "delete" : { "default" : 0, "description" : "Delete the original volume after successful copy. By default the original is kept as an unused volume entry.", @@ -23647,22 +27103,107 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/lxc/{vmid}/move_volume", "text" : "move_volume" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get container configuration, including pending changes.", + "method" : "GET", + "name" : "vm_pending", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "delete" : { + "description" : "Indicates a pending delete request if present and not 0.", + "maximum" : 2, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "key" : { + "description" : "Configuration option name.", + "type" : "string" + }, + "pending" : { + "description" : "Pending value.", + "optional" : 1, + "type" : "string" + }, + "value" : { + "description" : "Current value.", + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/pending", + "text" : "pending" } ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy the container (also delete all uses files).", "method" : "DELETE", "name" : "destroy_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "force" : { + "default" : 0, + "description" : "Force destroy, even if running.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, + "purge" : { + "default" : 0, + "description" : "Remove container from all related configurations. For example, backup jobs, replication jobs or HA. Related ACLs and Firewall entries will *always* be removed.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -23688,6 +27229,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmdiridx", @@ -23739,6 +27281,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "LXC container index (per node).", "method" : "GET", "name" : "vmlist", @@ -23767,6 +27310,11 @@ var pveapi = [ "optional" : 1, "type" : "number" }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, "maxdisk" : { "description" : "Root disk size in bytes.", "optional" : 1, @@ -23798,6 +27346,11 @@ var pveapi = [ ], "type" : "string" }, + "tags" : { + "description" : "The current configured tags, if any.", + "optional" : 1, + "type" : "string" + }, "uptime" : { "description" : "Uptime.", "optional" : 1, @@ -23823,6 +27376,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create or restore a container.", "method" : "POST", "name" : "create_vm", @@ -23842,7 +27396,8 @@ var pveapi = [ "type" : "string" }, "bwlimit" : { - "description" : "Override i/o bandwidth limit (in KiB/s).", + "default" : "restore limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", "minimum" : "0", "optional" : 1, "type" : "number", @@ -23901,6 +27456,12 @@ var pveapi = [ "features" : { "description" : "Allow containers access to advanced features.", "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, "fuse" : { "default" : 0, "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", @@ -23913,11 +27474,17 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, "mount" : { "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", "format_description" : "fstype;fstype;...", "optional" : 1, - "pattern" : "(?^:[a-zA-Z0-9; ]+)", + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", "type" : "string" }, "nesting" : { @@ -23929,7 +27496,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[fuse=<1|0>] [,keyctl=<1|0>] [,mount=] [,nesting=<1|0>]" + "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=] [,nesting=<1|0>]" }, "force" : { "description" : "Allow to overwrite existing container.", @@ -23937,6 +27504,13 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostname" : { "description" : "Set a host name for the container.", "format" : "dns-name", @@ -23955,7 +27529,10 @@ var pveapi = [ "description" : "Lock/unlock the VM.", "enum" : [ "backup", + "create", + "destroyed", "disk", + "fstrim", "migrate", "mounted", "rollback", @@ -23987,6 +27564,13 @@ var pveapi = [ "type" : "boolean", "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "mp" : { "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", "format" : "pve-lxc-mp-string", @@ -24034,7 +27618,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" }, "nameserver" : { "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", @@ -24074,10 +27658,11 @@ var pveapi = [ }, "hwaddr" : { "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:(?:[a-f0-9]{2}:){5}[a-f0-9]{2})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "ip" : { "description" : "IPv4 address in CIDR format.", @@ -24208,6 +27793,13 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, "quota" : { "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", "optional" : 1, @@ -24248,7 +27840,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[volume=] [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + "typetext" : "[volume=] [,acl=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" }, "searchdomain" : { "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", @@ -24293,6 +27885,13 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "template" : { "default" : 0, "description" : "Enable/disable Template.", @@ -24309,6 +27908,13 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - 6)" }, + "unique" : { + "description" : "Assign a unique random ethernet address.", + "optional" : 1, + "requires" : "restore", + "type" : "boolean", + "typetext" : "" + }, "unprivileged" : { "default" : 0, "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", @@ -24318,10 +27924,18 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[volume=]" }, "vmid" : { "description" : "The (unique) ID of the VM.", @@ -24356,6 +27970,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "ceph osd in", "method" : "POST", "name" : "in", @@ -24398,6 +28013,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "ceph osd out", "method" : "POST", "name" : "out", @@ -24436,10 +28052,61 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/ceph/osd/{osdid}/out", "text" : "out" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Instruct the OSD to scrub.", + "method" : "POST", + "name" : "scrub", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "deep" : { + "default" : 0, + "description" : "If set, instructs a deep scrub instead of a normal one.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "osdid" : { + "description" : "OSD ID", + "type" : "integer", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/osd/{osdid}/scrub", + "text" : "scrub" } ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy OSD", "method" : "DELETE", "name" : "destroyosd", @@ -24480,6 +28147,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Ceph osd list/tree.", "method" : "GET", "name" : "index", @@ -24513,40 +28181,41 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create OSD", "method" : "POST", "name" : "createosd", "parameters" : { "additionalProperties" : 0, "properties" : { - "bluestore" : { - "default" : 1, - "description" : "Use bluestore instead of filestore. This is the default.", + "db_dev" : { + "description" : "Block device name for block.db.", "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "dev" : { - "description" : "Block device name.", "type" : "string", "typetext" : "" }, - "fstype" : { - "default" : "xfs", - "description" : "File system type (filestore only).", - "enum" : [ - "xfs", - "ext4" - ], + "db_size" : { + "default" : "bluestore_block_db_size or 10% of OSD size", + "description" : "Size in GiB for block.db.", + "minimum" : 1, "optional" : 1, - "type" : "string" + "requires" : "db_dev", + "type" : "number", + "typetext" : " (1 - N)", + "verbose_description" : "If a block.db is requested but the size is not given, will be automatically selected by: bluestore_block_db_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 10% of the size of the OSD device. Fails if the available size is not enough." }, - "journal_dev" : { - "description" : "Block device name for journal (filestore) or block.db (bluestore).", - "optional" : 1, + "dev" : { + "description" : "Block device name.", "type" : "string", "typetext" : "" }, + "encrypted" : { + "default" : 0, + "description" : "Enables encryption of the OSD.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -24554,10 +28223,20 @@ var pveapi = [ "typetext" : "" }, "wal_dev" : { - "description" : "Block device name for block.wal (bluestore only).", + "description" : "Block device name for block.wal.", "optional" : 1, "type" : "string", "typetext" : "" + }, + "wal_size" : { + "default" : "bluestore_block_wal_size or 1% of OSD size", + "description" : "Size in GiB for block.wal.", + "minimum" : 0.5, + "optional" : 1, + "requires" : "wal_dev", + "type" : "number", + "typetext" : " (0.5 - N)", + "verbose_description" : "If a block.wal is requested but the size is not given, will be automatically selected by: bluestore_block_wal_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 1% of the size of the OSD device. Fails if the available size is not enough." } } }, @@ -24577,6 +28256,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy Ceph Metadata Server", "method" : "DELETE", "name" : "destroymds", @@ -24612,6 +28292,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create Ceph Metadata Server (MDS)", "method" : "POST", "name" : "createmds", @@ -24628,6 +28309,7 @@ var pveapi = [ "name" : { "default" : "nodename", "description" : "The ID for the mds, when omitted the same as the nodename", + "maxLength" : 200, "optional" : 1, "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", "type" : "string" @@ -24663,6 +28345,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "MDS directory index.", "method" : "GET", "name" : "index", @@ -24739,7 +28422,311 @@ var pveapi = [ "children" : [ { "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy Ceph Manager.", + "method" : "DELETE", + "name" : "destroymgr", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "The ID of the manager", + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + }, "POST" : { + "allowtoken" : 1, + "description" : "Create Ceph Manager", + "method" : "POST", + "name" : "createmgr", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "The ID for the manager, when omitted the same as the nodename", + "maxLength" : 200, + "optional" : 1, + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/mgr/{id}", + "text" : "{id}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "MGR directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "addr" : { + "optional" : 1, + "type" : "string" + }, + "host" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "description" : "The name (ID) for the MGR" + }, + "state" : { + "description" : "State of the MGR", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/mgr", + "text" : "mgr" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy Ceph Monitor and Manager.", + "method" : "DELETE", + "name" : "destroymon", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "monid" : { + "description" : "Monitor ID", + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create Ceph Monitor and Manager", + "method" : "POST", + "name" : "createmon", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "mon-address" : { + "description" : "Overwrites autodetected monitor IP address. Must be in the public network of ceph.", + "format" : "ip", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "monid" : { + "description" : "The ID for the monitor, when omitted the same as the nodename", + "maxLength" : 200, + "optional" : 1, + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/mon/{monid}", + "text" : "{monid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get Ceph monitor list.", + "method" : "GET", + "name" : "listmon", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "addr" : { + "optional" : 1, + "type" : "string" + }, + "host" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/mon", + "text" : "mon" + }, + { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, "description" : "Create a Ceph filesystem", "method" : "POST", "name" : "createfs", @@ -24800,6 +28787,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -24827,6 +28815,7 @@ var pveapi = [ ] }, "protected" : 1, + "proxyto" : "node", "returns" : { "items" : { "properties" : { @@ -24862,6 +28851,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local disks.", "method" : "GET", "name" : "disks", @@ -24944,6 +28934,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Ceph configuration.", "method" : "GET", "name" : "config", @@ -24970,6 +28961,7 @@ var pveapi = [ 1 ] }, + "proxyto" : "node", "returns" : { "type" : "string" } @@ -24980,62 +28972,12 @@ var pveapi = [ "text" : "config" }, { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Destroy Ceph Monitor and Manager.", - "method" : "DELETE", - "name" : "destroymon", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "exclude-manager" : { - "default" : 0, - "description" : "When set, removes only the monitor, not the manager", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "monid" : { - "description" : "Monitor ID", - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/mon/{monid}", - "text" : "{monid}" - } - ], "info" : { "GET" : { - "description" : "Get Ceph monitor list.", + "allowtoken" : 1, + "description" : "Get Ceph configuration database.", "method" : "GET", - "name" : "listmon", + "name" : "configdb", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -25064,82 +29006,39 @@ var pveapi = [ "returns" : { "items" : { "properties" : { - "addr" : { + "can_update_at_runtime" : { + "type" : "boolean" + }, + "level" : { + "type" : "string" + }, + "mask" : { "type" : "string" }, "name" : { "type" : "string" + }, + "section" : { + "type" : "string" + }, + "value" : { + "type" : "string" } }, "type" : "object" }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], "type" : "array" } - }, - "POST" : { - "description" : "Create Ceph Monitor and Manager", - "method" : "POST", - "name" : "createmon", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "exclude-manager" : { - "default" : 0, - "description" : "When set, only a monitor will be created.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "id" : { - "description" : "The ID for the monitor, when omitted the same as the nodename", - "optional" : 1, - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, - "mon-address" : { - "description" : "Overwrites autodetected monitor IP address. Must be in the public network of ceph.", - "format" : "ip", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } } }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/mon", - "text" : "mon" + "leaf" : 1, + "path" : "/nodes/{node}/ceph/configdb", + "text" : "configdb" }, { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create initial ceph default configuration and setup symlinks.", "method" : "POST", "name" : "init", @@ -25157,7 +29056,7 @@ var pveapi = [ }, "disable_cephx" : { "default" : 0, - "description" : "Disable cephx authentification.\n\nWARNING: cephx is a security feature protecting against man-in-the-middle attacks. Only consider disabling cephx if your network is private!", + "description" : "Disable cephx authentication.\n\nWARNING: cephx is a security feature protecting against man-in-the-middle attacks. Only consider disabling cephx if your network is private!", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -25225,96 +29124,10 @@ var pveapi = [ "path" : "/nodes/{node}/ceph/init", "text" : "init" }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Destroy Ceph Manager.", - "method" : "DELETE", - "name" : "destroymgr", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "id" : { - "description" : "The ID of the manager", - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/mgr/{id}", - "text" : "{id}" - } - ], - "info" : { - "POST" : { - "description" : "Create Ceph Manager", - "method" : "POST", - "name" : "createmgr", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "id" : { - "description" : "The ID for the manager, when omitted the same as the nodename", - "optional" : 1, - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/mgr", - "text" : "mgr" - }, { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop ceph services.", "method" : "POST", "name" : "stop", @@ -25331,7 +29144,7 @@ var pveapi = [ "default" : "ceph.target", "description" : "Ceph service name.", "optional" : 1, - "pattern" : "(mon|mds|osd|mgr)\\.[A-Za-z0-9\\-]{1,32}", + "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", "type" : "string" } } @@ -25359,6 +29172,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Start ceph services.", "method" : "POST", "name" : "start", @@ -25375,7 +29189,7 @@ var pveapi = [ "default" : "ceph.target", "description" : "Ceph service name.", "optional" : 1, - "pattern" : "(mon|mds|osd|mgr)\\.[A-Za-z0-9\\-]{1,32}", + "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", "type" : "string" } } @@ -25403,6 +29217,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Restart ceph services.", "method" : "POST", "name" : "restart", @@ -25419,7 +29234,7 @@ var pveapi = [ "default" : "ceph.target", "description" : "Ceph service name.", "optional" : 1, - "pattern" : "(mon|mds|osd|mgr)\\.[A-Za-z0-9\\-]{1,32}", + "pattern" : "(mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", "type" : "string" } } @@ -25447,6 +29262,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get ceph status.", "method" : "GET", "name" : "status", @@ -25489,6 +29305,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy pool", "method" : "DELETE", "name" : "destroypool", @@ -25545,6 +29362,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List all pools.", "method" : "GET", "name" : "lspools", @@ -25598,6 +29416,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create POOL", "method" : "POST", "name" : "createpool", @@ -25691,6 +29510,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Unset a ceph flag", "method" : "DELETE", "name" : "unset_flag", @@ -25698,20 +29518,19 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "flag" : { - "description" : "The ceph flag to set/unset", + "description" : "The ceph flag to unset", "enum" : [ - "full", - "pause", - "noup", + "nobackfill", + "nodeep-scrub", "nodown", - "noout", "noin", - "nobackfill", + "noout", "norebalance", "norecover", "noscrub", - "nodeep-scrub", - "notieragent" + "notieragent", + "noup", + "pause" ], "type" : "string" }, @@ -25739,27 +29558,27 @@ var pveapi = [ } }, "POST" : { - "description" : "Set a ceph flag", + "allowtoken" : 1, + "description" : "Set a specific ceph flag", "method" : "POST", "name" : "set_flag", "parameters" : { "additionalProperties" : 0, "properties" : { "flag" : { - "description" : "The ceph flag to set/unset", + "description" : "The ceph flag to set", "enum" : [ - "full", - "pause", - "noup", + "nobackfill", + "nodeep-scrub", "nodown", - "noout", "noin", - "nobackfill", + "noout", "norebalance", "norecover", "noscrub", - "nodeep-scrub", - "notieragent" + "notieragent", + "noup", + "pause" ], "type" : "string" }, @@ -25794,6 +29613,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "get all set ceph flags", "method" : "GET", "name" : "get_flags", @@ -25831,6 +29651,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get OSD crush map", "method" : "GET", "name" : "crush", @@ -25871,6 +29692,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read ceph log", "method" : "GET", "name" : "log", @@ -25933,6 +29755,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List ceph rules.", "method" : "GET", "name" : "rules", @@ -25983,6 +29806,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -26033,6 +29857,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Extract configuration from vzdump backup archive.", "method" : "GET", "name" : "extractconfig", @@ -26070,6 +29895,7 @@ var pveapi = [ ], "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create backup.", "method" : "POST", "name" : "vzdump", @@ -26098,7 +29924,8 @@ var pveapi = [ "0", "1", "gzip", - "lzo" + "lzo", + "zstd" ], "optional" : 1, "type" : "string" @@ -26190,6 +30017,12 @@ var pveapi = [ "type" : "integer", "typetext" : "" }, + "pool" : { + "description" : "Backup all known guest systems included in the specified pool.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "quiet" : { "default" : 0, "description" : "Be quiet.", @@ -26233,7 +30066,7 @@ var pveapi = [ }, "stop" : { "default" : 0, - "description" : "Stop runnig backup jobs on this host.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -26265,6 +30098,13 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" } } }, @@ -26290,6 +30130,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read service properties", "method" : "GET", "name" : "service_state", @@ -26349,6 +30190,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Start service.", "method" : "POST", "name" : "service_start", @@ -26408,6 +30250,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop service.", "method" : "POST", "name" : "service_stop", @@ -26467,6 +30310,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Restart service.", "method" : "POST", "name" : "service_restart", @@ -26526,6 +30370,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Reload service.", "method" : "POST", "name" : "service_reload", @@ -26585,6 +30430,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "srvcmdidx", @@ -26656,6 +30502,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Service list.", "method" : "GET", "name" : "index", @@ -26703,6 +30550,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read subscription info.", "method" : "GET", "name" : "get", @@ -26726,6 +30574,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Update subscription info.", "method" : "POST", "name" : "update", @@ -26763,6 +30612,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set subscription key.", "method" : "PUT", "name" : "set", @@ -26772,7 +30622,7 @@ var pveapi = [ "key" : { "description" : "Proxmox VE subscription key", "maxLength" : 32, - "pattern" : "pve([124])([cbsp])-[0-9a-f]{10}", + "pattern" : "pve([1248])([cbsp])-[0-9a-f]{10}", "type" : "string" }, "node" : { @@ -26808,6 +30658,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete network device configuration", "method" : "DELETE", "name" : "delete_network", @@ -26846,6 +30697,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read network device configuration", "method" : "GET", "name" : "network_config", @@ -26891,6 +30743,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update network device configuration", "method" : "PUT", "name" : "update_network", @@ -26919,6 +30772,13 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "bond-primary" : { + "description" : "Specify the primary interface for active-backup bond.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "bond_mode" : { "description" : "Bonding mode.", "enum" : [ @@ -26947,7 +30807,7 @@ var pveapi = [ "type" : "string" }, "bridge_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", + "description" : "Specify the interfaces you want to add to your bridge.", "format" : "pve-iface-list", "optional" : 1, "type" : "string", @@ -26959,6 +30819,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "cidr" : { + "description" : "IPv4 CIDR.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "cidr6" : { + "description" : "IPv6 CIDR.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "comments" : { "description" : "Comments", "optional" : 1, @@ -27000,6 +30874,14 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mtu" : { + "description" : "MTU.", + "maximum" : 65520, + "minimum" : 1280, + "optional" : 1, + "type" : "integer", + "typetext" : " (1280 - 65520)" + }, "netmask" : { "description" : "Network mask.", "format" : "ipv4mask", @@ -27045,7 +30927,7 @@ var pveapi = [ "typetext" : "" }, "ovs_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", + "description" : "Specify the interfaces you want to add to your bridge.", "format" : "pve-iface-list", "optional" : 1, "type" : "string", @@ -27081,6 +30963,21 @@ var pveapi = [ "unknown" ], "type" : "string" + }, + "vlan-id" : { + "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 4094)" + }, + "vlan-raw-device" : { + "description" : "Specify the raw interface for the vlan interface.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, @@ -27107,6 +31004,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Revert network configuration changes.", "method" : "DELETE", "name" : "revert_network_changes", @@ -27137,6 +31035,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List available networks", "method" : "GET", "name" : "index", @@ -27187,6 +31086,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create network device configuration", "method" : "POST", "name" : "create_network", @@ -27215,6 +31115,13 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "bond-primary" : { + "description" : "Specify the primary interface for active-backup bond.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "bond_mode" : { "description" : "Bonding mode.", "enum" : [ @@ -27243,7 +31150,7 @@ var pveapi = [ "type" : "string" }, "bridge_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", + "description" : "Specify the interfaces you want to add to your bridge.", "format" : "pve-iface-list", "optional" : 1, "type" : "string", @@ -27255,6 +31162,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "cidr" : { + "description" : "IPv4 CIDR.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "cidr6" : { + "description" : "IPv6 CIDR.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "comments" : { "description" : "Comments", "optional" : 1, @@ -27289,6 +31210,14 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mtu" : { + "description" : "MTU.", + "maximum" : 65520, + "minimum" : 1280, + "optional" : 1, + "type" : "integer", + "typetext" : " (1280 - 65520)" + }, "netmask" : { "description" : "Network mask.", "format" : "ipv4mask", @@ -27334,7 +31263,7 @@ var pveapi = [ "typetext" : "" }, "ovs_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", + "description" : "Specify the interfaces you want to add to your bridge.", "format" : "pve-iface-list", "optional" : 1, "type" : "string", @@ -27370,6 +31299,21 @@ var pveapi = [ "unknown" ], "type" : "string" + }, + "vlan-id" : { + "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 4094)" + }, + "vlan-raw-device" : { + "description" : "Specify the raw interface for the vlan interface.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, @@ -27389,6 +31333,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Reload network configuration", "method" : "PUT", "name" : "reload_network_config", @@ -27430,6 +31375,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read task log.", "method" : "GET", "name" : "read_task_log", @@ -27493,6 +31439,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read task status.", "method" : "GET", "name" : "read_task_status", @@ -27541,6 +31488,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Stop a task.", "method" : "DELETE", "name" : "stop_task", @@ -27570,6 +31518,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "", "method" : "GET", "name" : "upid_index", @@ -27613,6 +31562,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read task list for one node (finished tasks).", "method" : "GET", "name" : "node_tasks", @@ -27639,6 +31589,17 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "source" : { + "default" : "archive", + "description" : "List archived, active or all tasks.", + "enum" : [ + "archive", + "active", + "all" + ], + "optional" : 1, + "type" : "string" + }, "start" : { "default" : 0, "description" : "List tasks beginning from this offset.", @@ -27647,6 +31608,12 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "typefilter" : { + "description" : "Only list tasks of this type (e.g., vzstart, vzdump).", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "userfilter" : { "description" : "Only list tasks from this user.", "optional" : 1, @@ -27677,26 +31644,21 @@ var pveapi = [ "type" : "integer" }, "id" : { - "optional" : 1, "title" : "ID", "type" : "string" }, "node" : { - "optional" : 1, "title" : "Node", "type" : "string" }, "pid" : { - "optional" : 1, "title" : "PID", "type" : "integer" }, "pstart" : { - "optional" : 1, "type" : "integer" }, "starttime" : { - "optional" : 1, "title" : "Starttime", "type" : "integer" }, @@ -27706,7 +31668,6 @@ var pveapi = [ "type" : "string" }, "type" : { - "optional" : 1, "title" : "Type", "type" : "string" }, @@ -27715,7 +31676,6 @@ var pveapi = [ "type" : "string" }, "user" : { - "optional" : 1, "title" : "User", "type" : "string" } @@ -27741,6 +31701,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Scan zfs pool list on local node.", "method" : "GET", "name" : "zfsscan", @@ -27787,6 +31748,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Scan remote NFS server.", "method" : "GET", "name" : "nfsscan", @@ -27843,6 +31805,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Scan remote CIFS server.", "method" : "GET", "name" : "cifsscan", @@ -27917,6 +31880,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Scan remote GlusterFS server.", "method" : "GET", "name" : "glusterfsscan", @@ -27969,6 +31933,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Scan remote iSCSI server.", "method" : "GET", "name" : "iscsiscan", @@ -28025,6 +31990,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local LVM volume groups.", "method" : "GET", "name" : "lvmscan", @@ -28071,6 +32037,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local LVM Thin Pools.", "method" : "GET", "name" : "lvmthinscan", @@ -28122,6 +32089,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local USB devices.", "method" : "GET", "name" : "usbscan", @@ -28204,6 +32172,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Index of available scan methods", "method" : "GET", "name" : "index", @@ -28253,6 +32222,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List mediated device types for given PCI device.", "method" : "GET", "name" : "mdevscan", @@ -28311,6 +32281,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Index of available pci methods", "method" : "GET", "name" : "pciindex", @@ -28358,6 +32329,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local PCI devices.", "method" : "GET", "name" : "pciscan", @@ -28472,6 +32444,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Index of hardware types", "method" : "GET", "name" : "index", @@ -28521,12 +32494,21 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete volume", "method" : "DELETE", "name" : "delete", "parameters" : { "additionalProperties" : 0, "properties" : { + "delay" : { + "description" : "Time to wait for the task to finish. We return 'null' if the task finish within that time.", + "maximum" : 30, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 30)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -28554,10 +32536,12 @@ var pveapi = [ "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "optional" : 1, + "type" : "string" } }, "GET" : { + "allowtoken" : 1, "description" : "Get volume attributes", "method" : "GET", "name" : "info", @@ -28595,6 +32579,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Copy a volume. This is experimental code - do not use.", "method" : "POST", "name" : "copy", @@ -28647,6 +32632,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List storage content.", "method" : "GET", "name" : "index", @@ -28699,6 +32685,12 @@ var pveapi = [ "returns" : { "items" : { "properties" : { + "ctime" : { + "description" : "Creation time (seconds since the UNIX Epoch).", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, "format" : { "description" : "Format identifier ('raw', 'qcow2', 'subvol', 'iso', 'tgz' ...)", "type" : "string" @@ -28714,7 +32706,7 @@ var pveapi = [ "type" : "integer" }, "used" : { - "description" : "Used space. Please note that most storage plugins does not report anything useful here.", + "description" : "Used space. Please note that most storage plugins do not report anything useful here.", "optional" : 1, "renderer" : "bytes", "type" : "integer" @@ -28741,6 +32733,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Allocate disk images.", "method" : "POST", "name" : "create", @@ -28812,6 +32805,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read storage status.", "method" : "GET", "name" : "read_status", @@ -28858,6 +32852,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read storage RRD statistics (returns PNG).", "method" : "GET", "name" : "rrd", @@ -28935,6 +32930,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read storage RRD statistics.", "method" : "GET", "name" : "rrddata", @@ -29005,6 +33001,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Upload templates and ISO images.", "method" : "POST", "name" : "upload", @@ -29035,7 +33032,7 @@ var pveapi = [ "typetext" : "" }, "tmpfilename" : { - "description" : "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trustet port on localhost.", + "description" : "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trusted port on localhost.", "optional" : 1, "type" : "string", "typetext" : "" @@ -29064,6 +33061,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "", "method" : "GET", "name" : "diridx", @@ -29122,6 +33120,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get status for all datastores.", "method" : "GET", "name" : "index", @@ -29255,6 +33254,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List LVM Volume Groups", "method" : "GET", "name" : "index", @@ -29341,6 +33341,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create an LVM Volume Group", "method" : "POST", "name" : "create", @@ -29397,6 +33398,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List LVM thinpools", "method" : "GET", "name" : "index", @@ -29455,6 +33457,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create an LVM thinpool", "method" : "POST", "name" : "create", @@ -29511,6 +33514,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "PVE Managed Directory storages.", "method" : "GET", "name" : "index", @@ -29569,6 +33573,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a Filesystem on an unused disk. Will be mounted under '/mnt/pve/NAME'.", "method" : "POST", "name" : "create", @@ -29637,6 +33642,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get details about a zpool.", "method" : "GET", "name" : "detail", @@ -29745,6 +33751,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List Zpools.", "method" : "GET", "name" : "index", @@ -29817,6 +33824,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a ZFS pool.", "method" : "POST", "name" : "create", @@ -29909,6 +33917,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List local disks.", "method" : "GET", "name" : "list", @@ -30007,6 +34016,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get SMART Health of a disk.", "method" : "GET", "name" : "smart", @@ -30075,6 +34085,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Initialize Disk with GPT", "method" : "POST", "name" : "initgpt", @@ -30124,6 +34135,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Node index.", "method" : "GET", "name" : "index", @@ -30166,6 +34178,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List available updates.", "method" : "GET", "name" : "list_updates", @@ -30200,6 +34213,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "This is used to resynchronize the package index files from their sources (apt-get update).", "method" : "POST", "name" : "update_database", @@ -30251,6 +34265,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get package changelogs.", "method" : "GET", "name" : "changelog", @@ -30298,6 +34313,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get package information for important Proxmox packages.", "method" : "GET", "name" : "versions", @@ -30338,6 +34354,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index for apt (Advanced Package Tool).", "method" : "GET", "name" : "index", @@ -30385,6 +34402,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -30429,6 +34447,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -30489,9 +34508,25 @@ var pveapi = [ "optional" : 1, "type" : "integer" }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "optional" : 1, - "type" : "integer" + "type" : "string" }, "pos" : { "type" : "integer" @@ -30516,6 +34551,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -30580,6 +34616,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -30663,6 +34715,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -30706,6 +34759,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -30763,6 +34817,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -30839,6 +34909,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get host firewall options.", "method" : "GET", "name" : "get_options", @@ -30902,28 +34973,69 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "log_nf_conntrack" : { + "default" : 0, + "description" : "Enable logging of conntrack information.", + "optional" : 1, + "type" : "boolean" + }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean" + }, + "nf_conntrack_allow_invalid" : { + "default" : 0, + "description" : "Allow invalid packets on connection tracking.", "optional" : 1, "type" : "boolean" }, "nf_conntrack_max" : { + "default" : 262144, "description" : "Maximum number of tracked connections.", "minimum" : 32768, "optional" : 1, "type" : "integer" }, "nf_conntrack_tcp_timeout_established" : { + "default" : 432000, "description" : "Conntrack established timeout.", "minimum" : 7875, "optional" : 1, "type" : "integer" }, + "nf_conntrack_tcp_timeout_syn_recv" : { + "default" : 60, + "description" : "Conntrack syn recv timeout.", + "maximum" : 60, + "minimum" : 30, + "optional" : 1, + "type" : "integer" + }, "nosmurfs" : { "description" : "Enable SMURFS filter.", "optional" : 1, "type" : "boolean" }, + "protection_synflood" : { + "default" : 0, + "description" : "Enable synflood protection", + "optional" : 1, + "type" : "boolean" + }, + "protection_synflood_burst" : { + "default" : 1000, + "description" : "Synflood protection rate burst by ip src.", + "optional" : 1, + "type" : "integer" + }, + "protection_synflood_rate" : { + "default" : 200, + "description" : "Synflood protection rate syn/sec by ip src.", + "optional" : 1, + "type" : "integer" + }, "smurf_log_level" : { "description" : "Log level for SMURFS filter.", "enum" : [ @@ -30957,6 +35069,7 @@ var pveapi = [ "type" : "string" }, "tcpflags" : { + "default" : 0, "description" : "Filter illegal combinations of TCP flags.", "optional" : 1, "type" : "boolean" @@ -30966,6 +35079,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set Firewall options.", "method" : "PUT", "name" : "set_options", @@ -31024,13 +35138,29 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "log_nf_conntrack" : { + "default" : 0, + "description" : "Enable logging of conntrack information.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "ndp" : { - "description" : "Enable NDP.", + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nf_conntrack_allow_invalid" : { + "default" : 0, + "description" : "Allow invalid packets on connection tracking.", "optional" : 1, "type" : "boolean", "typetext" : "" }, "nf_conntrack_max" : { + "default" : 262144, "description" : "Maximum number of tracked connections.", "minimum" : 32768, "optional" : 1, @@ -31038,12 +35168,22 @@ var pveapi = [ "typetext" : " (32768 - N)" }, "nf_conntrack_tcp_timeout_established" : { + "default" : 432000, "description" : "Conntrack established timeout.", "minimum" : 7875, "optional" : 1, "type" : "integer", "typetext" : " (7875 - N)" }, + "nf_conntrack_tcp_timeout_syn_recv" : { + "default" : 60, + "description" : "Conntrack syn recv timeout.", + "maximum" : 60, + "minimum" : 30, + "optional" : 1, + "type" : "integer", + "typetext" : " (30 - 60)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -31056,6 +35196,27 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "protection_synflood" : { + "default" : 0, + "description" : "Enable synflood protection", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "protection_synflood_burst" : { + "default" : 1000, + "description" : "Synflood protection rate burst by ip src.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "protection_synflood_rate" : { + "default" : 200, + "description" : "Synflood protection rate syn/sec by ip src.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, "smurf_log_level" : { "description" : "Log level for SMURFS filter.", "enum" : [ @@ -31089,6 +35250,7 @@ var pveapi = [ "type" : "string" }, "tcpflags" : { + "default" : 0, "description" : "Filter illegal combinations of TCP flags.", "optional" : 1, "type" : "boolean", @@ -31119,6 +35281,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read firewall log", "method" : "GET", "name" : "log", @@ -31181,6 +35344,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -31224,6 +35388,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get replication job status.", "method" : "GET", "name" : "job_status", @@ -31262,6 +35427,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read replication job log.", "method" : "GET", "name" : "read_job_log", @@ -31325,6 +35491,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Schedule replication job to start as soon as possible.", "method" : "POST", "name" : "schedule_now", @@ -31368,6 +35535,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -31413,6 +35581,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List status of all replication jobs on this node.", "method" : "GET", "name" : "status", @@ -31471,6 +35640,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Revoke existing certificate from CA.", "method" : "DELETE", "name" : "revoke_certificate", @@ -31492,6 +35662,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Order a new certificate from ACME-compatible CA.", "method" : "POST", "name" : "new_certificate", @@ -31520,6 +35691,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Renew existing certificate from CA.", "method" : "PUT", "name" : "renew_certificate", @@ -31555,6 +35727,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "ACME index.", "method" : "GET", "name" : "index", @@ -31594,6 +35767,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get information about node's certificates.", "method" : "GET", "name" : "info", @@ -31648,6 +35822,16 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "public-key-bits" : { + "description" : "Certificate's public key size", + "optional" : 1, + "type" : "integer" + }, + "public-key-type" : { + "description" : "Certificate's public key algorithm", + "optional" : 1, + "type" : "string" + }, "san" : { "description" : "List of Certificate's SubjectAlternativeName entries.", "items" : { @@ -31676,6 +35860,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "DELETE custom certificate chain and key.", "method" : "DELETE", "name" : "remove_custom_cert", @@ -31704,6 +35889,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Upload or update custom certificate chain and key.", "method" : "POST", "name" : "upload_custom_cert", @@ -31782,6 +35968,16 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "public-key-bits" : { + "description" : "Certificate's public key size", + "optional" : 1, + "type" : "integer" + }, + "public-key-type" : { + "description" : "Certificate's public key algorithm", + "optional" : 1, + "type" : "string" + }, "san" : { "description" : "List of Certificate's SubjectAlternativeName entries.", "items" : { @@ -31808,6 +36004,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Node index.", "method" : "GET", "name" : "index", @@ -31847,6 +36044,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get node configuration options.", "method" : "GET", "name" : "get_config", @@ -31858,6 +36056,24 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "property" : { + "default" : "all", + "description" : "Return only a specific property from the node configuration.", + "enum" : [ + "acme", + "acmedomain0", + "acmedomain1", + "acmedomain2", + "acmedomain3", + "acmedomain4", + "acmedomain5", + "description", + "startall-onboot-delay", + "wakeonlan" + ], + "optional" : 1, + "type" : "string" } } }, @@ -31876,6 +36092,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set node configuration options.", "method" : "PUT", "name" : "set_options", @@ -31897,12 +36114,43 @@ var pveapi = [ "description" : "List of domains for this node's ACME certificate", "format" : "pve-acme-domain-list", "format_description" : "domain[;domain;...]", + "optional" : 1, "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "domains= [,account=]" + "typetext" : "[account=] [,domains=]" + }, + "acmedomain[n]" : { + "description" : "ACME domain and validation plugin", + "format" : { + "alias" : { + "description" : "Alias for the Domain to verify ACME Challenge over DNS", + "format" : "pve-acme-domain", + "format_description" : "domain", + "optional" : 1, + "type" : "string" + }, + "domain" : { + "default_key" : 1, + "description" : "domain for this node's ACME certificate", + "format" : "pve-acme-domain", + "format_description" : "domain", + "type" : "string" + }, + "plugin" : { + "default" : "standalone", + "description" : "The ACME plugin ID", + "format" : "pve-configid", + "format_description" : "name of the plugin configuration", + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[domain=] [,alias=] [,plugin=]" }, "delete" : { "description" : "A list of settings you want to delete.", @@ -31929,6 +36177,22 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "startall-onboot-delay" : { + "default" : 0, + "description" : "Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.", + "maximum" : 300, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 300)" + }, + "wakeonlan" : { + "description" : "MAC address for wake on LAN", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, @@ -31952,9 +36216,238 @@ var pveapi = [ "path" : "/nodes/{node}/config", "text" : "config" }, + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List zone content.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "status" : { + "description" : "Status.", + "optional" : 1, + "type" : "string" + }, + "statusmsg" : { + "description" : "Status details", + "optional" : 1, + "type" : "string" + }, + "vnet" : { + "description" : "Vnet identifier.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{vnet}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/sdn/zones/{zone}/content", + "text" : "content" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "", + "method" : "GET", + "name" : "diridx", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Audit" + ], + "any", + 1 + ] + }, + "returns" : { + "items" : { + "properties" : { + "subdir" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/sdn/zones/{zone}", + "text" : "{zone}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get status for all zones.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit'", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "status" : { + "description" : "Status of zone", + "type" : "string" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{zone}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/sdn/zones", + "text" : "zones" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN index.", + "method" : "GET", + "name" : "sdnindex", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/sdn", + "text" : "sdn" + }, { "info" : { "GET" : { + "allowtoken" : 1, "description" : "API version details", "method" : "GET", "name" : "version", @@ -31976,12 +36469,15 @@ var pveapi = [ "returns" : { "properties" : { "release" : { + "description" : "The current installed Proxmox VE Release", "type" : "string" }, "repoid" : { + "description" : "The short git commit hash ID from which this version was build", "type" : "string" }, "version" : { + "description" : "The current installed pve-manager package version", "type" : "string" } }, @@ -31996,6 +36492,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node status", "method" : "GET", "name" : "status", @@ -32025,6 +36522,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Reboot or shutdown a node.", "method" : "POST", "name" : "node_cmd", @@ -32070,6 +36568,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read tap/vm network device interface counters", "method" : "GET", "name" : "netstat", @@ -32110,6 +36609,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute multiple commands in order.", "method" : "POST", "name" : "execute", @@ -32149,9 +36649,49 @@ var pveapi = [ "path" : "/nodes/{node}/execute", "text" : "execute" }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Try to wake a node via 'wake on LAN' network packet.", + "method" : "POST", + "name" : "wakeonlan", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "target node for wake on LAN packet", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.PowerMgmt" + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "MAC address used to assemble the WoL magic packet.", + "format" : "mac-addr", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/wakeonlan", + "text" : "wakeonlan" + }, { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node RRD statistics (returns PNG)", "method" : "GET", "name" : "rrd", @@ -32219,6 +36759,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node RRD statistics", "method" : "GET", "name" : "rrddata", @@ -32279,6 +36820,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read system log", "method" : "GET", "name" : "syslog", @@ -32357,15 +36899,101 @@ var pveapi = [ "path" : "/nodes/{node}/syslog", "text" : "syslog" }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read Journal", + "method" : "GET", + "name" : "journal", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "endcursor" : { + "description" : "End before the given Cursor. Conflicts with 'until'", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "lastentries" : { + "description" : "Limit to the last X lines. Conflicts with a range.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "since" : { + "description" : "Display all log since this UNIX epoch. Conflicts with 'startcursor'.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "startcursor" : { + "description" : "Start after the given Cursor. Conflicts with 'since'", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "until" : { + "description" : "Display all log until this UNIX epoch. Conflicts with 'endcursor'.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Syslog" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "type" : "string" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/journal", + "text" : "journal" + }, { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a VNC Shell proxy.", "method" : "POST", "name" : "vncshell", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "upgrade", + "ceph_install", + "login" + ], + "optional" : 1, + "type" : "string" + }, "height" : { "description" : "sets the height of the console in pixels.", "maximum" : 2160, @@ -32382,7 +37010,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -32443,12 +37071,24 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a VNC Shell proxy.", "method" : "POST", "name" : "termproxy", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "upgrade", + "ceph_install", + "login" + ], + "optional" : 1, + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -32457,7 +37097,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -32501,6 +37141,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Opens a weksocket for VNC traffic.", "method" : "GET", "name" : "vncwebsocket", @@ -32555,12 +37196,24 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a SPICE shell.", "method" : "POST", "name" : "spiceshell", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "upgrade", + "ceph_install", + "login" + ], + "optional" : 1, + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -32576,7 +37229,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -32625,6 +37278,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read DNS settings.", "method" : "GET", "name" : "dns", @@ -32677,6 +37331,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Write DNS settings.", "method" : "PUT", "name" : "update_dns", @@ -32740,6 +37395,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read server time and time zone settings.", "method" : "GET", "name" : "time", @@ -32788,6 +37444,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set time zone.", "method" : "PUT", "name" : "set_timezone", @@ -32830,6 +37487,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get list of appliances.", "method" : "GET", "name" : "aplinfo", @@ -32857,6 +37515,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Download appliance templates.", "method" : "POST", "name" : "apl_download", @@ -32876,7 +37535,7 @@ var pveapi = [ "typetext" : "" }, "template" : { - "description" : "The template wich will downloaded", + "description" : "The template which will downloaded", "maxLength" : 255, "type" : "string", "typetext" : "" @@ -32906,6 +37565,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Gather various systems information about a node", "method" : "GET", "name" : "report", @@ -32943,14 +37603,16 @@ var pveapi = [ { "info" : { "POST" : { - "description" : "Start all VMs and containers (when onboot=1).", + "allowtoken" : 1, + "description" : "Start all VMs and containers located on this node (by default only those with onboot=1).", "method" : "POST", "name" : "startall", "parameters" : { "additionalProperties" : 0, "properties" : { "force" : { - "description" : "force if onboot=0.", + "default" : "off", + "description" : "Issue start command even if virtual guest have 'onboot' not set or set to off.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -32962,7 +37624,7 @@ var pveapi = [ "typetext" : "" }, "vms" : { - "description" : "Only consider Guests with these IDs.", + "description" : "Only consider guests from this comma separated list of VMIDs.", "format" : "pve-vmid-list", "optional" : 1, "type" : "string", @@ -32993,6 +37655,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop all VMs and Containers.", "method" : "POST", "name" : "stopall", @@ -33037,6 +37700,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Migrate all VMs and Containers.", "method" : "POST", "name" : "migrateall", @@ -33068,6 +37732,12 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "with-local-disks" : { + "description" : "Enable live storage migration for local disk", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, @@ -33094,6 +37764,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get the content of /etc/hosts.", "method" : "GET", "name" : "get_etc_hosts", @@ -33136,6 +37807,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Write /etc/hosts.", "method" : "POST", "name" : "write_etc_hosts", @@ -33185,6 +37857,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Node index.", "method" : "GET", "name" : "index", @@ -33224,6 +37897,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Cluster node index.", "method" : "GET", "name" : "index", @@ -33262,7 +37936,7 @@ var pveapi = [ "description" : "Used memory in bytes.", "optional" : 1, "renderer" : "bytes", - "type" : "string" + "type" : "integer" }, "node" : { "description" : "The cluster node name.", @@ -33311,6 +37985,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete storage configuration.", "method" : "DELETE", "name" : "delete", @@ -33340,6 +38015,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read storage configuration.", "method" : "GET", "name" : "read", @@ -33368,6 +38044,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update storage configuration.", "method" : "PUT", "name" : "update", @@ -33384,35 +38061,35 @@ var pveapi = [ "description" : "Set bandwidth/io limits various operations.", "format" : { "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", + "description" : "bandwidth limit in KiB/s for cloning disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "default" : { - "description" : "default bandwidth limit in MiB/s", + "description" : "default bandwidth limit in KiB/s", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", + "description" : "bandwidth limit in KiB/s for moving disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", + "description" : "bandwidth limit in KiB/s for restoring guests from backups", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, @@ -33470,6 +38147,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, "format" : { "description" : "Default image format.", "format" : "pve-storage-format", @@ -33523,6 +38206,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mountpoint" : { + "description" : "mount point", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "nodes" : { "description" : "List of cluster node names.", "format" : "pve-node-list", @@ -33674,6 +38364,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Storage index.", "method" : "GET", "name" : "index", @@ -33687,15 +38378,14 @@ var pveapi = [ "cifs", "dir", "drbd", - "fake", "glusterfs", "iscsi", "iscsidirect", "lvm", "lvmthin", "nfs", + "pbs", "rbd", - "sheepdog", "zfs", "zfspool" ], @@ -33727,6 +38417,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new storage.", "method" : "POST", "name" : "create", @@ -33756,35 +38447,35 @@ var pveapi = [ "description" : "Set bandwidth/io limits various operations.", "format" : { "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", + "description" : "bandwidth limit in KiB/s for cloning disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "default" : { - "description" : "default bandwidth limit in MiB/s", + "description" : "default bandwidth limit in KiB/s", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", + "description" : "bandwidth limit in KiB/s for moving disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", + "description" : "bandwidth limit in KiB/s for restoring guests from backups", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, @@ -33814,6 +38505,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "datastore" : { + "description" : "Proxmox backup server datastore name.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "disable" : { "description" : "Flag to disable the storage.", "optional" : 1, @@ -33834,6 +38531,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, "format" : { "description" : "Default image format.", "format" : "pve-storage-format", @@ -33893,6 +38596,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mountpoint" : { + "description" : "mount point", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "nodes" : { "description" : "List of cluster node names.", "format" : "pve-node-list", @@ -34053,15 +38763,14 @@ var pveapi = [ "cifs", "dir", "drbd", - "fake", "glusterfs", "iscsi", "iscsidirect", "lvm", "lvmthin", "nfs", + "pbs", "rbd", - "sheepdog", "zfs", "zfspool" ], @@ -34113,8 +38822,447 @@ var pveapi = [ { "children" : [ { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get user TFA types (Personal and Realm).", + "method" : "GET", + "name" : "read_user_tfa_type", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "userid-group", + [ + "User.Modify", + "Sys.Audit" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "realm" : { + "description" : "The type of TFA the users realm has set, if any.", + "enum" : [ + "oath", + "yubico" + ], + "optional" : 1, + "type" : "string" + }, + "user" : { + "description" : "The type of TFA the user has set, if any.", + "enum" : [ + "oath", + "u2f" + ], + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/users/{userid}/tfa", + "text" : "tfa" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove API token for a specific user.", + "method" : "DELETE", + "name" : "remove_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get specific API token information.", + "method" : "GET", + "name" : "read_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "returns" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Generate a new API token for a specific user. NOTE: returns API token value, which needs to be stored as it cannot be retrieved afterwards!", + "method" : "POST", + "name" : "generate_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "full-tokenid" : { + "description" : "The full token id.", + "format_description" : "!", + "type" : "string" + }, + "info" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + }, + "value" : { + "description" : "API token value used for authentication.", + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update API token for a specific user.", + "method" : "PUT", + "name" : "update_token_info", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "Updated token information.", + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/users/{userid}/token/{tokenid}", + "text" : "{tokenid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get user API tokens.", + "method" : "GET", + "name" : "token_index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{tokenid}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/access/users/{userid}/token", + "text" : "token" + } + ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete user.", "method" : "DELETE", "name" : "delete_user", @@ -34151,6 +39299,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get user configuration.", "method" : "GET", "name" : "read_user", @@ -34204,6 +39353,11 @@ var pveapi = [ "type" : "string" }, "groups" : { + "items" : { + "format" : "pve-groupid", + "type" : "string" + }, + "optional" : 1, "type" : "array" }, "keys" : { @@ -34214,12 +39368,17 @@ var pveapi = [ "lastname" : { "optional" : 1, "type" : "string" + }, + "tokens" : { + "optional" : 1, + "type" : "object" } }, "type" : "object" } }, "PUT" : { + "allowtoken" : 1, "description" : "Update user configuration.", "method" : "PUT", "name" : "update_user", @@ -34304,13 +39463,14 @@ var pveapi = [ } } }, - "leaf" : 1, + "leaf" : 0, "path" : "/access/users/{userid}", "text" : "{userid}" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "User index.", "method" : "GET", "name" : "index", @@ -34322,6 +39482,13 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "" + }, + "full" : { + "default" : 0, + "description" : "Include group and token information.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, @@ -34357,6 +39524,11 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "groups" : { + "format" : "pve-groupid-list", + "optional" : 1, + "type" : "string" + }, "keys" : { "description" : "Keys for two factor auth (yubico).", "optional" : 1, @@ -34366,6 +39538,37 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "tokens" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + } + }, + "type" : "object" + }, + "optional" : 1, + "type" : "array" + }, "userid" : { "description" : "User ID", "format" : "pve-userid", @@ -34385,6 +39588,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new user.", "method" : "POST", "name" : "create_user", @@ -34488,6 +39692,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete group.", "method" : "DELETE", "name" : "delete_group", @@ -34516,6 +39721,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get group configuration.", "method" : "GET", "name" : "read_group", @@ -34562,6 +39768,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update group data.", "method" : "PUT", "name" : "update_group", @@ -34602,6 +39809,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Group index.", "method" : "GET", "name" : "index", @@ -34622,6 +39830,12 @@ var pveapi = [ "groupid" : { "format" : "pve-groupid", "type" : "string" + }, + "users" : { + "description" : "list of users which form this group", + "format" : "pve-userid-list", + "optional" : 1, + "type" : "string" } }, "type" : "object" @@ -34636,6 +39850,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new group.", "method" : "POST", "name" : "create_group", @@ -34678,6 +39893,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete role.", "method" : "DELETE", "name" : "delete_role", @@ -34706,6 +39922,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get role configuration.", "method" : "GET", "name" : "read_role", @@ -34761,6 +39978,14 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "SDN.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "SDN.Audit" : { + "optional" : 1, + "type" : "boolean" + }, "Sys.Audit" : { "optional" : 1, "type" : "boolean" @@ -34858,6 +40083,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update an existing role.", "method" : "PUT", "name" : "update_role", @@ -34905,6 +40131,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Role index.", "method" : "GET", "name" : "index", @@ -34944,6 +40171,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new role.", "method" : "POST", "name" : "create_role", @@ -34985,6 +40213,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Access Control List (ACLs).", "method" : "GET", "name" : "read_acl", @@ -35015,7 +40244,8 @@ var pveapi = [ "type" : { "enum" : [ "user", - "group" + "group", + "token" ], "type" : "string" }, @@ -35029,6 +40259,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update Access Control List (add or remove permissions).", "method" : "PUT", "name" : "update_acl", @@ -35066,6 +40297,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "tokens" : { + "description" : "List of API tokens.", + "format" : "pve-tokenid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "users" : { "description" : "List of users.", "format" : "pve-userid-list", @@ -35094,8 +40332,93 @@ var pveapi = [ { "children" : [ { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Syncs users and/or groups from the configured LDAP to user.cfg. NOTE: Synced groups will have the name 'name-$realm', so make sure those groups do not exist to prevent overwriting.", + "method" : "POST", + "name" : "sync", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "dry-run" : { + "default" : 0, + "description" : "If set, does not write anything.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "enable-new" : { + "default" : "1", + "description" : "Enable newly synced users immediately.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "full" : { + "description" : "If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync. Otherwise only syncs information which is not already present, and does not deletes or modifies anything else.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "purge" : { + "description" : "Remove ACLs for users or groups which were removed from the config during a sync.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "realm" : { + "description" : "Authentication domain ID", + "format" : "pve-realm", + "maxLength" : 32, + "type" : "string", + "typetext" : "" + }, + "scope" : { + "description" : "Select what to sync.", + "enum" : [ + "users", + "groups", + "both" + ], + "optional" : "1", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "and", + [ + "userid-param", + "Realm.AllocateUser" + ], + [ + "userid-group", + [ + "User.Modify" + ] + ] + ], + "description" : "'Realm.AllocateUser' on '/access/realm/' and 'User.Modify' permissions to '/access/groups/'." + }, + "protected" : 1, + "returns" : { + "description" : "Worker Task-UPID", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/access/domains/{realm}/sync", + "text" : "sync" + } + ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete an authentication server.", "method" : "DELETE", "name" : "delete", @@ -35126,6 +40449,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get auth server configuration.", "method" : "GET", "name" : "read", @@ -35156,6 +40480,7 @@ var pveapi = [ "returns" : {} }, "PUT" : { + "allowtoken" : 1, "description" : "Update authentication server settings.", "method" : "PUT", "name" : "update", @@ -35230,6 +40555,60 @@ var pveapi = [ "pattern" : "\\S+", "type" : "string" }, + "filter" : { + "description" : "LDAP filter for user sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_classes" : { + "default" : "groupOfNames, group, univentionGroup, ipausergroup", + "description" : "The objectclasses for groups.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_dn" : { + "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.", + "maxLength" : 256, + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, + "group_filter" : { + "description" : "LDAP filter for group sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_name_attr" : { + "description" : "LDAP attribute representing a groups name. If not set or found, the first value of the DN will be used as name.", + "format" : "ldap-simple-attr", + "maxLength" : 256, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mode" : { + "default" : "ldap", + "description" : "LDAP protocol mode.", + "enum" : [ + "ldap", + "ldaps", + "ldap+starttls" + ], + "optional" : 1, + "type" : "string" + }, + "password" : { + "description" : "LDAP bind password. Will be stored in '/etc/pve/priv/realm/.pw'.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "port" : { "description" : "Server port.", "maximum" : 65535, @@ -35246,7 +40625,7 @@ var pveapi = [ "typetext" : "" }, "secure" : { - "description" : "Use secure LDAPS protocol.", + "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -35267,13 +40646,37 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "sslversion" : { + "description" : "LDAPS TLS/SSL version. It's not recommended to use version older than 1.2!", + "enum" : [ + "tlsv1", + "tlsv1_1", + "tlsv1_2", + "tlsv1_3" + ], + "optional" : 1, + "type" : "string" + }, + "sync-defaults-options" : { + "description" : "The default options for behavior of synchronizations.", + "format" : "realm-sync-options", + "optional" : 1, + "type" : "string", + "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=]" + }, + "sync_attributes" : { + "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write 'email=mail'. By default, each PVE user field is represented by an LDAP attribute of the same name.", + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, "tfa" : { "description" : "Use Two-factor authentication.", "format" : "pve-tfa-config", "maxLength" : 128, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" }, "user_attr" : { "description" : "LDAP user attribute name", @@ -35282,6 +40685,14 @@ var pveapi = [ "pattern" : "\\S{2,}", "type" : "string" }, + "user_classes" : { + "default" : "inetorgperson, posixaccount, person, user", + "description" : "The objectclasses for users.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "verify" : { "default" : 0, "description" : "Verify the server's SSL certificate", @@ -35307,13 +40718,14 @@ var pveapi = [ } } }, - "leaf" : 1, + "leaf" : 0, "path" : "/access/domains/{realm}", "text" : "{realm}" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Authentication domain index.", "method" : "GET", "name" : "index", @@ -35343,6 +40755,9 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "type" : { + "type" : "string" } }, "type" : "object" @@ -35357,6 +40772,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add an authentication server.", "method" : "POST", "name" : "create", @@ -35416,6 +40832,60 @@ var pveapi = [ "pattern" : "\\S+", "type" : "string" }, + "filter" : { + "description" : "LDAP filter for user sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_classes" : { + "default" : "groupOfNames, group, univentionGroup, ipausergroup", + "description" : "The objectclasses for groups.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_dn" : { + "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.", + "maxLength" : 256, + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, + "group_filter" : { + "description" : "LDAP filter for group sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_name_attr" : { + "description" : "LDAP attribute representing a groups name. If not set or found, the first value of the DN will be used as name.", + "format" : "ldap-simple-attr", + "maxLength" : 256, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mode" : { + "default" : "ldap", + "description" : "LDAP protocol mode.", + "enum" : [ + "ldap", + "ldaps", + "ldap+starttls" + ], + "optional" : 1, + "type" : "string" + }, + "password" : { + "description" : "LDAP bind password. Will be stored in '/etc/pve/priv/realm/.pw'.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "port" : { "description" : "Server port.", "maximum" : 65535, @@ -35432,7 +40902,7 @@ var pveapi = [ "typetext" : "" }, "secure" : { - "description" : "Use secure LDAPS protocol.", + "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -35453,13 +40923,37 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "sslversion" : { + "description" : "LDAPS TLS/SSL version. It's not recommended to use version older than 1.2!", + "enum" : [ + "tlsv1", + "tlsv1_1", + "tlsv1_2", + "tlsv1_3" + ], + "optional" : 1, + "type" : "string" + }, + "sync-defaults-options" : { + "description" : "The default options for behavior of synchronizations.", + "format" : "realm-sync-options", + "optional" : 1, + "type" : "string", + "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=]" + }, + "sync_attributes" : { + "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write 'email=mail'. By default, each PVE user field is represented by an LDAP attribute of the same name.", + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, "tfa" : { "description" : "Use Two-factor authentication.", "format" : "pve-tfa-config", "maxLength" : 128, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" }, "type" : { "description" : "Realm type.", @@ -35478,6 +40972,14 @@ var pveapi = [ "pattern" : "\\S{2,}", "type" : "string" }, + "user_classes" : { + "default" : "inetorgperson, posixaccount, person, user", + "description" : "The objectclasses for users.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "verify" : { "default" : 0, "description" : "Verify the server's SSL certificate", @@ -35510,6 +41012,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Dummy. Useful for formatters which want to provide a login page.", "method" : "GET", "name" : "get_ticket", @@ -35524,6 +41027,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 0, "description" : "Create or verify authentication ticket.", "method" : "POST", "name" : "create_ticket", @@ -35608,6 +41112,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 0, "description" : "Change user password.", "method" : "PUT", "name" : "change_password", @@ -35662,10 +41167,167 @@ var pveapi = [ "leaf" : 1, "path" : "/access/password", "text" : "password" + }, + { + "info" : { + "POST" : { + "allowtoken" : 0, + "description" : "Finish a u2f challenge.", + "method" : "POST", + "name" : "verify_tfa", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "response" : { + "description" : "The response to the current authentication challenge.", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "protected" : 1, + "returns" : { + "properties" : { + "ticket" : { + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 0, + "description" : "Change user u2f authentication.", + "method" : "PUT", + "name" : "change_tfa", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "The action to perform", + "enum" : [ + "delete", + "new", + "confirm" + ], + "type" : "string" + }, + "config" : { + "description" : "A TFA configuration. This must currently be of type TOTP of not set at all.", + "format" : "pve-tfa-config", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" + }, + "key" : { + "description" : "When adding TOTP, the shared secret value.", + "format" : "pve-tfa-secret", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "password" : { + "description" : "The current password.", + "maxLength" : 64, + "minLength" : 5, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "response" : { + "description" : "Either the the response to the current u2f registration challenge, or, when adding TOTP, the currently valid TOTP value.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "and", + [ + "userid-param", + "Realm.AllocateUser" + ], + [ + "userid-group", + [ + "User.Modify" + ] + ] + ] + ], + "description" : "A user can change their own u2f or totp token." + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/tfa", + "text" : "tfa" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Retrieve effective permissions of given user/token.", + "method" : "GET", + "name" : "permissions", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "path" : { + "description" : "Only dump this specific path, not the whole tree.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "userid" : { + "description" : "User ID or full API token ID", + "optional" : 1, + "pattern" : "(?^:^(?^:[^\\s:/]+)\\@(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)(?:!(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+))?$)", + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Each user/token is allowed to dump their own permissions. A user can dump the permissions of another user if they have 'Sys.Audit' permission on /access.", + "user" : "all" + }, + "returns" : { + "description" : "Map of \"path\" => (Map of \"privilege\" => \"propagate boolean\").", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/permissions", + "text" : "permissions" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -35703,6 +41365,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete pool.", "method" : "DELETE", "name" : "delete_pool", @@ -35732,6 +41395,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get pool configuration.", "method" : "GET", "name" : "read_pool", @@ -35798,6 +41462,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update pool data.", "method" : "PUT", "name" : "update_pool", @@ -35859,6 +41524,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Pool index.", "method" : "GET", "name" : "index", @@ -35888,6 +41554,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new pool.", "method" : "POST", "name" : "create_pool", @@ -35928,6 +41595,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "API version details. The result also includes the global datacenter confguration.", "method" : "GET", "name" : "version",