-var pveapi = [
+const apiSchema = [
{
"children" : [
{
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Mark replication job for removal.",
"method" : "DELETE",
"name" : "delete",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read replication job configuration.",
"method" : "GET",
"name" : "read",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update replication job configuration.",
"method" : "PUT",
"name" : "update",
},
"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,
"typetext" : "<string>"
},
"source" : {
- "description" : "Source of the replication.",
+ "description" : "For internal use, to detect if the guest was stolen.",
"format" : "pve-node",
"optional" : 1,
"type" : "string",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List replication jobs.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a new replication job",
"method" : "POST",
"name" : "create",
},
"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,
"typetext" : "<string>"
},
"source" : {
- "description" : "Source of the replication.",
+ "description" : "For internal use, to detect if the guest was stolen.",
"format" : "pve-node",
"optional" : 1,
"type" : "string",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Remove Metric server.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "id" : {
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Read metric server configuration.",
+ "method" : "GET",
+ "name" : "read",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "id" : {
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit"
+ ]
+ ]
+ },
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create a new external metric server config",
+ "method" : "POST",
+ "name" : "create",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "api-path-prefix" : {
+ "description" : "An API path prefix inserted between '<host>:<port>/' and '/api2/'. Can be useful if the InfluxDB service runs behind a reverse proxy.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "bucket" : {
+ "description" : "The InfluxDB bucket/db. Only necessary when using the http v2 api.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "disable" : {
+ "description" : "Flag to disable the plugin.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "id" : {
+ "description" : "The ID of the entry.",
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "influxdbproto" : {
+ "default" : "udp",
+ "enum" : [
+ "udp",
+ "http",
+ "https"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "max-body-size" : {
+ "default" : 25000000,
+ "description" : "InfluxDB max-body-size in bytes. Requests are batched up to this size.",
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - N)"
+ },
+ "mtu" : {
+ "default" : 1500,
+ "description" : "MTU for metrics transmission over UDP",
+ "maximum" : 65536,
+ "minimum" : 512,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (512 - 65536)"
+ },
+ "organization" : {
+ "description" : "The InfluxDB organization. Only necessary when using the http v2 api. Has no meaning when using v2 compatibility api.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "path" : {
+ "description" : "root graphite path (ex: proxmox.mycluster.mykey)",
+ "format" : "graphite-path",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "port" : {
+ "description" : "server network port",
+ "maximum" : 65536,
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 65536)"
+ },
+ "proto" : {
+ "description" : "Protocol to send graphite data. TCP or UDP (default)",
+ "enum" : [
+ "udp",
+ "tcp"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "server" : {
+ "description" : "server dns name or IP address",
+ "format" : "address",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "timeout" : {
+ "default" : 1,
+ "description" : "graphite TCP socket timeout (default=1)",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "token" : {
+ "description" : "The InfluxDB access token. Only necessary when using the http v2 api. If the v2 compatibility api is used, use 'user:password' instead.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "enum" : [
+ "graphite",
+ "influxdb"
+ ],
+ "format" : "pve-configid",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Update metric server configuration.",
+ "method" : "PUT",
+ "name" : "update",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "api-path-prefix" : {
+ "description" : "An API path prefix inserted between '<host>:<port>/' and '/api2/'. Can be useful if the InfluxDB service runs behind a reverse proxy.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "bucket" : {
+ "description" : "The InfluxDB bucket/db. Only necessary when using the http v2 api.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "disable" : {
+ "description" : "Flag to disable the plugin.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "id" : {
+ "description" : "The ID of the entry.",
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "influxdbproto" : {
+ "default" : "udp",
+ "enum" : [
+ "udp",
+ "http",
+ "https"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "max-body-size" : {
+ "default" : 25000000,
+ "description" : "InfluxDB max-body-size in bytes. Requests are batched up to this size.",
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - N)"
+ },
+ "mtu" : {
+ "default" : 1500,
+ "description" : "MTU for metrics transmission over UDP",
+ "maximum" : 65536,
+ "minimum" : 512,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (512 - 65536)"
+ },
+ "organization" : {
+ "description" : "The InfluxDB organization. Only necessary when using the http v2 api. Has no meaning when using v2 compatibility api.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "path" : {
+ "description" : "root graphite path (ex: proxmox.mycluster.mykey)",
+ "format" : "graphite-path",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "port" : {
+ "description" : "server network port",
+ "maximum" : 65536,
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 65536)"
+ },
+ "proto" : {
+ "description" : "Protocol to send graphite data. TCP or UDP (default)",
+ "enum" : [
+ "udp",
+ "tcp"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "server" : {
+ "description" : "server dns name or IP address",
+ "format" : "address",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "timeout" : {
+ "default" : 1,
+ "description" : "graphite TCP socket timeout (default=1)",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "token" : {
+ "description" : "The InfluxDB access token. Only necessary when using the http v2 api. If the v2 compatibility api is used, use 'user:password' instead.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/metrics/server/{id}",
+ "text" : "{id}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "List configured metric servers.",
+ "method" : "GET",
+ "name" : "server_index",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit"
+ ]
+ ]
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "disable" : {
+ "description" : "Flag to disable the plugin.",
+ "type" : "boolean"
+ },
+ "id" : {
+ "description" : "The ID of the entry.",
+ "type" : "string"
+ },
+ "port" : {
+ "description" : "Server network port",
+ "type" : "integer"
+ },
+ "server" : {
+ "description" : "Server dns name or IP address",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{id}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/metrics/server",
+ "text" : "server"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Metrics index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {},
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/metrics",
+ "text" : "metrics"
+ },
+ {
+ "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",
}
},
"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" : "<integer>"
+ },
"force" : {
"description" : "Do not throw error if node already exists.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "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=]<IP> [,priority=<integer>]"
+ },
+ "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" : "<string>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "integer",
"typetext" : "<integer> (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" : "<string>"
- },
- "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" : "<string>"
- },
"votes" : {
"description" : "Number of votes for this node",
"minimum" : 0,
},
"corosync_conf" : {
"type" : "string"
+ },
+ "warnings" : {
+ "items" : {
+ "type" : "string"
+ },
+ "type" : "array"
}
},
"type" : "object"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Corosync node list.",
"method" : "GET",
"name" : "nodes",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get information needed to join this cluster over the connected node.",
"method" : "GET",
"name" : "join_info",
"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"
}
}
},
"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" : {
"type" : "string",
"typetext" : "<string>"
},
+ "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=]<IP> [,priority=<integer>]"
+ },
"nodeid" : {
"description" : "Node id for this node.",
"minimum" : 1,
"type" : "string",
"typetext" : "<string>"
},
- "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" : "<string>"
- },
- "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" : "<string>"
- },
"votes" : {
"description" : "Number of votes for this node",
"minimum" : 0,
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get corosync totem protocol settings.",
"method" : "GET",
"name" : "totem",
"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",
}
},
"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" : "<string>"
- },
- "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" : "<string>"
- },
"clustername" : {
"description" : "The name of the cluster.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
},
+ "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=]<IP> [,priority=<integer>]"
+ },
"nodeid" : {
"description" : "Node id for this node.",
"minimum" : 1,
"type" : "integer",
"typetext" : "<integer> (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" : "<string>"
- },
- "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" : "<string>"
- },
"votes" : {
"description" : "Number of votes for this node.",
"minimum" : 1,
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete rule.",
"method" : "DELETE",
"name" : "delete_rule",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get single rule data.",
"method" : "GET",
"name" : "get_rule",
"optional" : 1,
"type" : "integer"
},
+ "icmp-type" : {
+ "optional" : 1,
+ "type" : "string"
+ },
"iface" : {
"optional" : 1,
"type" : "string"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Modify rule data.",
"method" : "PUT",
"name" : "update_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
"type" : "string"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete security group.",
"method" : "DELETE",
"name" : "delete_security_group",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "List rules.",
"method" : "GET",
"name" : "get_rules",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new rule.",
"method" : "POST",
"name" : "create_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
"type" : "string"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List security groups.",
"method" : "GET",
"name" : "list_security_groups",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new security group.",
"method" : "POST",
"name" : "create_security_group",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete rule.",
"method" : "DELETE",
"name" : "delete_rule",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get single rule data.",
"method" : "GET",
"name" : "get_rule",
"optional" : 1,
"type" : "integer"
},
+ "icmp-type" : {
+ "optional" : 1,
+ "type" : "string"
+ },
"iface" : {
"optional" : 1,
"type" : "string"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Modify rule data.",
"method" : "PUT",
"name" : "update_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List rules.",
"method" : "GET",
"name" : "get_rules",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new rule.",
"method" : "POST",
"name" : "create_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network from IPSet.",
"method" : "DELETE",
"name" : "remove_ip",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read IP or Network settings from IPSet.",
"method" : "GET",
"name" : "read_ip",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network settings",
"method" : "PUT",
"name" : "update_ip",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete IPSet",
"method" : "DELETE",
"name" : "delete_ipset",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSet content",
"method" : "GET",
"name" : "get_ipset",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Add IP or Network to IPSet.",
"method" : "POST",
"name" : "create_ip",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSets",
"method" : "GET",
"name" : "ipset_index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new IPSet",
"method" : "POST",
"name" : "create_ipset",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network alias.",
"method" : "DELETE",
"name" : "remove_alias",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read alias.",
"method" : "GET",
"name" : "read_alias",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network alias.",
"method" : "PUT",
"name" : "update_alias",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List aliases",
"method" : "GET",
"name" : "get_aliases",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create IP or Network Alias.",
"method" : "POST",
"name" : "create_alias",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get Firewall options.",
"method" : "GET",
"name" : "get_options",
"format" : {
"burst" : {
"default" : 5,
- "description" : "Inital burst of packages which will get logged",
+ "description" : "Initial burst of packages which will always get logged before the rate is applied",
"minimum" : 0,
"optional" : 1,
"type" : "integer"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set Firewall options.",
"method" : "PUT",
"name" : "set_options",
"format" : {
"burst" : {
"default" : 5,
- "description" : "Inital burst of packages which will get logged",
+ "description" : "Initial burst of packages which will always get logged before the rate is applied",
"minimum" : 0,
"optional" : 1,
"type" : "integer"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List available macros",
"method" : "GET",
"name" : "get_macros",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
"method" : "GET",
"name" : "refs",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"children" : [
{
+ "children" : [
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Returns included guests and the backup status of their disks. Optimized to be used in ExtJS tree views.",
+ "method" : "GET",
+ "name" : "get_volume_backup_included",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "id" : {
+ "description" : "The job ID.",
+ "maxLength" : 50,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "description" : "Root node of the tree object. Children represent guests, grandchildren represent volumes of that guest.",
+ "properties" : {
+ "children" : {
+ "items" : {
+ "properties" : {
+ "children" : {
+ "description" : "The volumes of the guest with the information if they will be included in backups.",
+ "items" : {
+ "properties" : {
+ "id" : {
+ "description" : "Configuration key of the volume.",
+ "type" : "string"
+ },
+ "included" : {
+ "description" : "Whether the volume is included in the backup or not.",
+ "type" : "boolean"
+ },
+ "name" : {
+ "description" : "Name of the volume.",
+ "type" : "string"
+ },
+ "reason" : {
+ "description" : "The reason why the volume is included (or excluded).",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "optional" : 1,
+ "type" : "array"
+ },
+ "id" : {
+ "description" : "VMID of the guest.",
+ "type" : "integer"
+ },
+ "name" : {
+ "description" : "Name of the guest",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "Type of the guest, VM, CT or unknown for removed but not purged guests.",
+ "enum" : [
+ "qemu",
+ "lxc",
+ "unknown"
+ ],
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ },
+ "type" : "object"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/backup/{id}/included_volumes",
+ "text" : "included_volumes"
+ }
+ ],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete vzdump backup job definition.",
"method" : "DELETE",
"name" : "delete_job",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read vzdump backup job definition.",
"method" : "GET",
"name" : "read_job",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update vzdump backup job definition.",
"method" : "PUT",
"name" : "update_job",
"0",
"1",
"gzip",
- "lzo"
+ "lzo",
+ "zstd"
],
"optional" : 1,
"type" : "string"
"typetext" : "<string>"
},
"exclude-path" : {
- "description" : "Exclude certain files/directories (shell globs).",
+ "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
"format" : "string-alist",
"optional" : 1,
"type" : "string",
"type" : "string"
},
"mailto" : {
- "description" : "Comma-separated list of email addresses that should receive email notifications.",
- "format" : "string-list",
+ "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+ "format" : "email-or-username-list",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
"maxfiles" : {
- "default" : 1,
- "description" : "Maximal number of backup files per guest system.",
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
"minimum" : 1,
"optional" : 1,
"type" : "integer",
"type" : "integer",
"typetext" : "<integer>"
},
+ "pool" : {
+ "description" : "Backup all known guest systems included in the specified pool.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "prune-backups" : {
+ "default" : "keep-all=1",
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+ },
"quiet" : {
"default" : 0,
"description" : "Be quiet.",
},
"remove" : {
"default" : 1,
- "description" : "Remove old backup files if there are more than 'maxfiles' backup files.",
+ "description" : "Prune older backups according to 'prune-backups'.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"type" : "string",
"typetext" : "<string>"
},
- "size" : {
- "default" : 1024,
- "description" : "Unused, will be removed in a future release.",
- "minimum" : 500,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (500 - N)"
- },
"starttime" : {
"description" : "Job Start time.",
"pattern" : "\\d{1,2}:\\d{1,2}",
},
"stop" : {
"default" : 0,
- "description" : "Stop runnig backup jobs on this host.",
+ "description" : "Stop running backup jobs on this host.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
+ },
+ "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" : "<integer>"
}
}
},
[
"Sys.Modify"
]
- ]
+ ],
+ "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user."
},
"protected" : 1,
"returns" : {
}
}
},
- "leaf" : 1,
+ "leaf" : 0,
"path" : "/cluster/backup/{id}",
"text" : "{id}"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List vzdump backup schedule.",
"method" : "GET",
"name" : "index",
"items" : {
"properties" : {
"id" : {
+ "description" : "The job ID.",
+ "maxLength" : 50,
"type" : "string"
}
},
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new vzdump backup job.",
"method" : "POST",
"name" : "create_job",
"0",
"1",
"gzip",
- "lzo"
+ "lzo",
+ "zstd"
],
"optional" : 1,
"type" : "string"
"typetext" : "<string>"
},
"exclude-path" : {
- "description" : "Exclude certain files/directories (shell globs).",
+ "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
"format" : "string-alist",
"optional" : 1,
"type" : "string",
"type" : "string"
},
"mailto" : {
- "description" : "Comma-separated list of email addresses that should receive email notifications.",
- "format" : "string-list",
+ "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+ "format" : "email-or-username-list",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
"maxfiles" : {
- "default" : 1,
- "description" : "Maximal number of backup files per guest system.",
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
"minimum" : 1,
"optional" : 1,
"type" : "integer",
"type" : "integer",
"typetext" : "<integer>"
},
+ "pool" : {
+ "description" : "Backup all known guest systems included in the specified pool.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "prune-backups" : {
+ "default" : "keep-all=1",
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+ },
"quiet" : {
"default" : 0,
"description" : "Be quiet.",
},
"remove" : {
"default" : 1,
- "description" : "Remove old backup files if there are more than 'maxfiles' backup files.",
+ "description" : "Prune older backups according to 'prune-backups'.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"type" : "string",
"typetext" : "<string>"
},
- "size" : {
- "default" : 1024,
- "description" : "Unused, will be removed in a future release.",
- "minimum" : 500,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (500 - N)"
- },
"starttime" : {
"description" : "Job Start time.",
"pattern" : "\\d{1,2}:\\d{1,2}",
},
"stop" : {
"default" : 0,
- "description" : "Stop runnig backup jobs on this host.",
+ "description" : "Stop running backup jobs on this host.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
+ },
+ "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" : "<integer>"
}
}
},
"path" : "/cluster/backup",
"text" : "backup"
},
+ {
+ "children" : [
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Shows all guests which are not covered by any backup job.",
+ "method" : "GET",
+ "name" : "get_guests_not_in_backup",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "description" : "Contains the guest objects.",
+ "items" : {
+ "properties" : {
+ "name" : {
+ "description" : "Name of the guest",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "Type of the guest.",
+ "enum" : [
+ "qemu",
+ "lxc"
+ ],
+ "type" : "string"
+ },
+ "vmid" : {
+ "description" : "VMID of the guest.",
+ "type" : "integer"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/backupinfo/not_backed_up",
+ "text" : "not_backed_up"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Stub, waits for future use.",
+ "method" : "GET",
+ "name" : "get_backupinfo",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "protected" : 1,
+ "returns" : {
+ "description" : "Shows stub message",
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/backupinfo",
+ "text" : "backupinfo"
+ },
{
"children" : [
{
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Request resource migration (online) to another node.",
"method" : "POST",
"name" : "migrate",
{
"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",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete resource configuration.",
"method" : "DELETE",
"name" : "delete",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read resource configuration.",
"method" : "GET",
"name" : "read",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update resource configuration.",
"method" : "PUT",
"name" : "update",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List HA resources.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a new HA resource.",
"method" : "POST",
"name" : "create",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete ha group configuration.",
"method" : "DELETE",
"name" : "delete",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read ha group configuration.",
"method" : "GET",
"name" : "read",
"returns" : {}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update ha group configuration.",
"method" : "PUT",
"name" : "update",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get HA groups.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a new HA group.",
"method" : "POST",
"name" : "create",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get HA manger status.",
"method" : "GET",
"name" : "status",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get full HA manger status, including LRM status.",
"method" : "GET",
"name" : "manager_status",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"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" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : [
+ "1984hosting",
+ "acmedns",
+ "acmeproxy",
+ "active24",
+ "ad",
+ "ali",
+ "anx",
+ "arvan",
+ "aurora",
+ "autodns",
+ "aws",
+ "azure",
+ "cf",
+ "clouddns",
+ "cloudns",
+ "cn",
+ "conoha",
+ "constellix",
+ "cx",
+ "cyon",
+ "da",
+ "ddnss",
+ "desec",
+ "df",
+ "dgon",
+ "dnsimple",
+ "do",
+ "doapi",
+ "domeneshop",
+ "dp",
+ "dpi",
+ "dreamhost",
+ "duckdns",
+ "durabledns",
+ "dyn",
+ "dynu",
+ "dynv6",
+ "easydns",
+ "edgedns",
+ "euserv",
+ "exoscale",
+ "freedns",
+ "gandi_livedns",
+ "gcloud",
+ "gd",
+ "gdnsdk",
+ "he",
+ "hetzner",
+ "hexonet",
+ "hostingde",
+ "huaweicloud",
+ "infoblox",
+ "infomaniak",
+ "internetbs",
+ "inwx",
+ "ionos",
+ "ispconfig",
+ "jd",
+ "joker",
+ "kappernet",
+ "kas",
+ "kinghost",
+ "knot",
+ "leaseweb",
+ "lexicon",
+ "linode",
+ "linode_v4",
+ "loopia",
+ "lua",
+ "maradns",
+ "me",
+ "miab",
+ "misaka",
+ "myapi",
+ "mydevil",
+ "mydnsjp",
+ "namecheap",
+ "namecom",
+ "namesilo",
+ "nederhost",
+ "neodigit",
+ "netcup",
+ "netlify",
+ "nic",
+ "njalla",
+ "nm",
+ "nsd",
+ "nsone",
+ "nsupdate",
+ "nw",
+ "one",
+ "online",
+ "openprovider",
+ "openstack",
+ "opnsense",
+ "ovh",
+ "pdns",
+ "pleskxml",
+ "pointhq",
+ "porkbun",
+ "rackcorp",
+ "rackspace",
+ "rcode0",
+ "regru",
+ "scaleway",
+ "schlundtech",
+ "selectel",
+ "servercow",
+ "simply",
+ "tele3",
+ "transip",
+ "ultra",
+ "unoeuro",
+ "variomedia",
+ "vscale",
+ "vultr",
+ "websupport",
+ "world4you",
+ "yandex",
+ "zilore",
+ "zone",
+ "zonomi"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "data" : {
+ "description" : "DNS plugin data. (base64 encoded)",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "disable" : {
+ "description" : "Flag to disable the config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "id" : {
+ "description" : "ACME Plugin ID name",
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "nodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<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" : "<integer> (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" : [
+ "1984hosting",
+ "acmedns",
+ "acmeproxy",
+ "active24",
+ "ad",
+ "ali",
+ "anx",
+ "arvan",
+ "aurora",
+ "autodns",
+ "aws",
+ "azure",
+ "cf",
+ "clouddns",
+ "cloudns",
+ "cn",
+ "conoha",
+ "constellix",
+ "cx",
+ "cyon",
+ "da",
+ "ddnss",
+ "desec",
+ "df",
+ "dgon",
+ "dnsimple",
+ "do",
+ "doapi",
+ "domeneshop",
+ "dp",
+ "dpi",
+ "dreamhost",
+ "duckdns",
+ "durabledns",
+ "dyn",
+ "dynu",
+ "dynv6",
+ "easydns",
+ "edgedns",
+ "euserv",
+ "exoscale",
+ "freedns",
+ "gandi_livedns",
+ "gcloud",
+ "gd",
+ "gdnsdk",
+ "he",
+ "hetzner",
+ "hexonet",
+ "hostingde",
+ "huaweicloud",
+ "infoblox",
+ "infomaniak",
+ "internetbs",
+ "inwx",
+ "ionos",
+ "ispconfig",
+ "jd",
+ "joker",
+ "kappernet",
+ "kas",
+ "kinghost",
+ "knot",
+ "leaseweb",
+ "lexicon",
+ "linode",
+ "linode_v4",
+ "loopia",
+ "lua",
+ "maradns",
+ "me",
+ "miab",
+ "misaka",
+ "myapi",
+ "mydevil",
+ "mydnsjp",
+ "namecheap",
+ "namecom",
+ "namesilo",
+ "nederhost",
+ "neodigit",
+ "netcup",
+ "netlify",
+ "nic",
+ "njalla",
+ "nm",
+ "nsd",
+ "nsone",
+ "nsupdate",
+ "nw",
+ "one",
+ "online",
+ "openprovider",
+ "openstack",
+ "opnsense",
+ "ovh",
+ "pdns",
+ "pleskxml",
+ "pointhq",
+ "porkbun",
+ "rackcorp",
+ "rackspace",
+ "rcode0",
+ "regru",
+ "scaleway",
+ "schlundtech",
+ "selectel",
+ "servercow",
+ "simply",
+ "tele3",
+ "transip",
+ "ultra",
+ "unoeuro",
+ "variomedia",
+ "vscale",
+ "vultr",
+ "websupport",
+ "world4you",
+ "yandex",
+ "zilore",
+ "zone",
+ "zonomi"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "data" : {
+ "description" : "DNS plugin data. (base64 encoded)",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "disable" : {
+ "description" : "Flag to disable the config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "id" : {
+ "description" : "ACME Plugin ID name",
+ "format" : "pve-configid",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "nodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<integer> (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",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Return existing ACME account information.",
"method" : "GET",
"name" : "get_account",
}
},
"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",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "ACMEAccount index.",
"method" : "GET",
"name" : "account_index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Register a new ACME account with CA.",
"method" : "POST",
"name" : "register_account",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Retrieve ACME TermsOfService URL from CA.",
"method" : "GET",
"name" : "get_tos",
},
"returns" : {
"description" : "ACME TermsOfService URL.",
+ "optional" : 1,
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/acme/tos",
+ "text" : "tos"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get named known ACME directory endpoints.",
+ "method" : "GET",
+ "name" : "get_directories",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "description" : "URL of ACME CA directory endpoint.",
+ "pattern" : "^https?://.*",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/acme/directories",
+ "text" : "directories"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get schema of ACME challenge types.",
+ "method" : "GET",
+ "name" : "challengeschema",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "name" : {
+ "description" : "Human readable name, falls back to id",
+ "type" : "string"
+ },
+ "schema" : {
+ "type" : "object"
+ },
+ "type" : {
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/acme/challenge-schema",
+ "text" : "challenge-schema"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "ACMEAccount index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {},
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/acme",
+ "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" : "<boolean>"
+ }
+ }
+ },
+ "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" : "<boolean>"
+ },
+ "nodeep-scrub" : {
+ "description" : "Deep Scrubbing is disabled.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "nodown" : {
+ "description" : "OSD failure reports are being ignored, such that the monitors will not mark OSDs down.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "noin" : {
+ "description" : "OSDs that were previously marked out will not be marked back in when they start.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "noout" : {
+ "description" : "OSDs will not automatically be marked out after the configured interval.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "norebalance" : {
+ "description" : "Rebalancing of PGs is suspended.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "norecover" : {
+ "description" : "Recovery of PGs is suspended.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "noscrub" : {
+ "description" : "Scrubbing is disabled.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "notieragent" : {
+ "description" : "Cache tiering activity is suspended.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "noup" : {
+ "description" : "OSDs are not allowed to start.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "pause" : {
+ "description" : "Pauses read and writes.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
"type" : "string"
}
}
},
- "leaf" : 1,
- "path" : "/cluster/acme/tos",
- "text" : "tos"
+ "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" : [
+ {
+ "children" : [
+ {
+ "children" : [
+ {
+ "info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Delete sdn subnet object configuration.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "subnet" : {
+ "description" : "The SDN subnet object identifier.",
+ "format" : "pve-sdn-subnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/vnets/{vnet}/subnets",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Read sdn subnet configuration.",
+ "method" : "GET",
+ "name" : "read",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "subnet" : {
+ "description" : "The SDN subnet object identifier.",
+ "format" : "pve-sdn-subnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/vnets/{vnet}/subnets/{subnet}",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Update sdn subnet object configuration.",
+ "method" : "PUT",
+ "name" : "update",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "dnszoneprefix" : {
+ "description" : "dns domain zone prefix ex: 'adm' -> <hostname>.adm.mydomain.com",
+ "format" : "dns-name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "gateway" : {
+ "description" : "Subnet Gateway: Will be assign on vnet for layer3 zones",
+ "format" : "ip",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "snat" : {
+ "description" : "enable masquerade for this subnet if pve-firewall",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "subnet" : {
+ "description" : "The SDN subnet object identifier.",
+ "format" : "pve-sdn-subnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "vnet" : {
+ "description" : "associated vnet",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/vnets/{vnet}/subnets",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/sdn/vnets/{vnet}/subnets/{subnet}",
+ "text" : "{subnet}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "SDN subnets index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/subnets/<subnet>'",
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {},
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{subnet}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create a new sdn subnet object.",
+ "method" : "POST",
+ "name" : "create",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "dnszoneprefix" : {
+ "description" : "dns domain zone prefix ex: 'adm' -> <hostname>.adm.mydomain.com",
+ "format" : "dns-name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "gateway" : {
+ "description" : "Subnet Gateway: Will be assign on vnet for layer3 zones",
+ "format" : "ip",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "snat" : {
+ "description" : "enable masquerade for this subnet if pve-firewall",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "subnet" : {
+ "description" : "The SDN subnet object identifier.",
+ "format" : "pve-sdn-subnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "enum" : [
+ "subnet"
+ ],
+ "type" : "string"
+ },
+ "vnet" : {
+ "description" : "associated vnet",
+ "optional" : 0,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/vnets/{vnet}/subnets",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/sdn/vnets/{vnet}/subnets",
+ "text" : "subnets"
+ }
+ ],
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "tag" : {
+ "description" : "vlan or vxlan id",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "vlanaware" : {
+ "description" : "Allow vm VLANs to pass through this vnet.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "zone" : {
+ "description" : "zone id",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/vnets",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/sdn/vnets/{vnet}",
+ "text" : "{vnet}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "SDN vnets index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/vnets/<vnet>'",
+ "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" : "<string>"
+ },
+ "tag" : {
+ "description" : "vlan or vxlan id",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "type" : {
+ "description" : "Type",
+ "enum" : [
+ "vnet"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vlanaware" : {
+ "description" : "Allow vm VLANs to pass through this vnet.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "vnet" : {
+ "description" : "The SDN vnet object identifier.",
+ "format" : "pve-sdn-vnet-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "zone" : {
+ "description" : "zone id",
+ "optional" : 0,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "zone" : {
+ "description" : "The SDN zone object identifier.",
+ "format" : "pve-sdn-zone-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ },
+ "controller" : {
+ "description" : "Frr router name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "dns" : {
+ "description" : "dns api server",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "dnszone" : {
+ "description" : "dns domain zone ex: mydomain.com",
+ "format" : "dns-name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "dp-id" : {
+ "description" : "Faucet dataplane id",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "exitnodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "ipam" : {
+ "description" : "use a specific ipam",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "mac" : {
+ "description" : "Anycast logical router mac address",
+ "format" : "mac-addr",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "mtu" : {
+ "description" : "MTU",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "nodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "peers" : {
+ "description" : "peers address list.",
+ "format" : "ip-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "reversedns" : {
+ "description" : "reverse dns api server",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "tag" : {
+ "description" : "Service-VLAN Tag",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "vlan-protocol" : {
+ "default" : "802.1q",
+ "enum" : [
+ "802.1q",
+ "802.1ad"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vrf-vxlan" : {
+ "description" : "l3vni.",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "zone" : {
+ "description" : "The SDN zone object identifier.",
+ "format" : "pve-sdn-zone-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "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" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "type" : {
+ "description" : "Only list SDN zones of specific type",
+ "enum" : [
+ "evpn",
+ "faucet",
+ "qinq",
+ "simple",
+ "vlan",
+ "vxlan"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>'",
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "dns" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "dnszone" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "ipam" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "mtu" : {
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "nodes" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "pending" : {
+ "optional" : 1
+ },
+ "reversedns" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "state" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "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" : "<string>"
+ },
+ "controller" : {
+ "description" : "Frr router name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "dns" : {
+ "description" : "dns api server",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "dnszone" : {
+ "description" : "dns domain zone ex: mydomain.com",
+ "format" : "dns-name",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "dp-id" : {
+ "description" : "Faucet dataplane id",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "exitnodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "ipam" : {
+ "description" : "use a specific ipam",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "mac" : {
+ "description" : "Anycast logical router mac address",
+ "format" : "mac-addr",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "mtu" : {
+ "description" : "MTU",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "nodes" : {
+ "description" : "List of cluster node names.",
+ "format" : "pve-node-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "peers" : {
+ "description" : "peers address list.",
+ "format" : "ip-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "reversedns" : {
+ "description" : "reverse dns api server",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "tag" : {
+ "description" : "Service-VLAN Tag",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "enum" : [
+ "evpn",
+ "faucet",
+ "qinq",
+ "simple",
+ "vlan",
+ "vxlan"
+ ],
+ "format" : "pve-configid",
+ "type" : "string"
+ },
+ "vlan-protocol" : {
+ "default" : "802.1q",
+ "enum" : [
+ "802.1q",
+ "802.1ad"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vrf-vxlan" : {
+ "description" : "l3vni.",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "zone" : {
+ "description" : "The SDN zone object identifier.",
+ "format" : "pve-sdn-zone-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ },
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ }
+ }
+ },
+ "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" : "<integer>"
+ },
+ "controller" : {
+ "description" : "The SDN controller object identifier.",
+ "format" : "pve-sdn-controller-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "ebgp" : {
+ "description" : "Enable ebgp. (remote-as external)",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "ebgp-multihop" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "loopback" : {
+ "description" : "source loopback interface.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "peers" : {
+ "description" : "peers address list.",
+ "format" : "ip-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "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" : {
+ "pending" : {
+ "description" : "Display pending config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "running" : {
+ "description" : "Display running config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "type" : {
+ "description" : "Only list sdn controllers of specific type",
+ "enum" : [
+ "bgp",
+ "evpn",
+ "faucet"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/controllers/<controller>'",
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "controller" : {
+ "type" : "string"
+ },
+ "pending" : {
+ "optional" : 1
+ },
+ "state" : {
+ "optional" : 1,
+ "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" : "<integer>"
+ },
+ "controller" : {
+ "description" : "The SDN controller object identifier.",
+ "format" : "pve-sdn-controller-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "ebgp" : {
+ "description" : "Enable ebgp. (remote-as external)",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "ebgp-multihop" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "loopback" : {
+ "description" : "source loopback interface.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "peers" : {
+ "description" : "peers address list.",
+ "format" : "ip-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "enum" : [
+ "bgp",
+ "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"
+ },
+ {
+ "children" : [
+ {
+ "info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Delete sdn ipam object configuration.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "ipam" : {
+ "description" : "The SDN ipam object identifier.",
+ "format" : "pve-sdn-ipam-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/ipams",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Read sdn ipam configuration.",
+ "method" : "GET",
+ "name" : "read",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "ipam" : {
+ "description" : "The SDN ipam object identifier.",
+ "format" : "pve-sdn-ipam-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/ipams/{ipam}",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Update sdn ipam object configuration.",
+ "method" : "PUT",
+ "name" : "update",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "ipam" : {
+ "description" : "The SDN ipam object identifier.",
+ "format" : "pve-sdn-ipam-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "section" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "token" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "url" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/ipams",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/sdn/ipams/{ipam}",
+ "text" : "{ipam}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "SDN ipams index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "type" : {
+ "description" : "Only list sdn ipams of specific type",
+ "enum" : [
+ "netbox",
+ "phpipam",
+ "pve"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/ipams/<ipam>'",
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "ipam" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{ipam}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create a new sdn ipam object.",
+ "method" : "POST",
+ "name" : "create",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "ipam" : {
+ "description" : "The SDN ipam object identifier.",
+ "format" : "pve-sdn-ipam-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "section" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "token" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "enum" : [
+ "netbox",
+ "phpipam",
+ "pve"
+ ],
+ "format" : "pve-configid",
+ "type" : "string"
+ },
+ "url" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/ipams",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/cluster/sdn/ipams",
+ "text" : "ipams"
},
{
+ "children" : [
+ {
+ "info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Delete sdn dns object configuration.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "dns" : {
+ "description" : "The SDN dns object identifier.",
+ "format" : "pve-sdn-dns-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/dns",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Read sdn dns configuration.",
+ "method" : "GET",
+ "name" : "read",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "dns" : {
+ "description" : "The SDN dns object identifier.",
+ "format" : "pve-sdn-dns-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/dns/{dns}",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Update sdn dns object configuration.",
+ "method" : "PUT",
+ "name" : "update",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "maxLength" : 4096,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "dns" : {
+ "description" : "The SDN dns object identifier.",
+ "format" : "pve-sdn-dns-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "key" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "reversemaskv6" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "ttl" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "url" : {
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/dns",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/cluster/sdn/dns/{dns}",
+ "text" : "{dns}"
+ }
+ ],
"info" : {
"GET" : {
- "description" : "Get named known ACME directory endpoints.",
+ "allowtoken" : 1,
+ "description" : "SDN dns index.",
"method" : "GET",
- "name" : "get_directories",
+ "name" : "index",
"parameters" : {
- "additionalProperties" : 0
+ "additionalProperties" : 0,
+ "properties" : {
+ "type" : {
+ "description" : "Only list sdn dns of specific type",
+ "enum" : [
+ "powerdns"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ }
},
"permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/dns/<dns>'",
"user" : "all"
},
"returns" : {
"items" : {
- "additionalProperties" : 0,
"properties" : {
- "name" : {
+ "dns" : {
"type" : "string"
},
- "url" : {
- "description" : "URL of ACME CA directory endpoint.",
- "pattern" : "^https?://.*",
+ "type" : {
"type" : "string"
}
},
"type" : "object"
},
+ "links" : [
+ {
+ "href" : "{dns}",
+ "rel" : "child"
+ }
+ ],
"type" : "array"
}
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create a new sdn dns object.",
+ "method" : "POST",
+ "name" : "create",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "dns" : {
+ "description" : "The SDN dns object identifier.",
+ "format" : "pve-sdn-dns-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "key" : {
+ "optional" : 0,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "reversemaskv6" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "reversev6mask" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "ttl" : {
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "type" : {
+ "description" : "Plugin type.",
+ "enum" : [
+ "powerdns"
+ ],
+ "format" : "pve-configid",
+ "type" : "string"
+ },
+ "url" : {
+ "optional" : 0,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ },
+ "type" : "object"
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/sdn/dns",
+ [
+ "SDN.Allocate"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "returns" : {
+ "type" : "null"
+ }
}
},
- "leaf" : 1,
- "path" : "/cluster/acme/directories",
- "text" : "directories"
+ "leaf" : 0,
+ "path" : "/cluster/sdn/dns",
+ "text" : "dns"
}
],
"info" : {
"GET" : {
- "description" : "ACMEAccount index.",
+ "allowtoken" : 1,
+ "description" : "Directory index.",
"method" : "GET",
"name" : "index",
"parameters" : {
"additionalProperties" : 0
},
"permissions" : {
- "user" : "all"
+ "check" : [
+ "perm",
+ "/",
+ [
+ "SDN.Audit"
+ ]
+ ]
},
"returns" : {
"items" : {
- "properties" : {},
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ }
+ },
"type" : "object"
},
"links" : [
{
- "href" : "{name}",
+ "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/acme",
- "text" : "acme"
+ "path" : "/cluster/sdn",
+ "text" : "sdn"
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read cluster log",
"method" : "GET",
"name" : "log",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Resources index (cluster wide).",
"method" : "GET",
"name" : "resources",
"enum" : [
"vm",
"storage",
- "node"
+ "node",
+ "sdn"
],
"optional" : 1,
"type" : "string"
"returns" : {
"items" : {
"properties" : {
+ "content" : {
+ "description" : "Allowed storage content types (when type == storage).",
+ "format" : "pve-storage-content-list",
+ "optional" : 1,
+ "type" : "string"
+ },
"cpu" : {
"description" : "CPU utilization (when type in node,qemu,lxc).",
"optional" : 1,
"optional" : 1,
"type" : "string"
},
+ "plugintype" : {
+ "description" : "More specific type, if available.",
+ "optional" : 1,
+ "type" : "string"
+ },
"pool" : {
"description" : "The pool name (when type in pool,qemu,lxc).",
"optional" : 1,
"pool",
"qemu",
"lxc",
- "openvz"
+ "openvz",
+ "sdn"
],
"type" : "string"
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List recent tasks (cluster wide).",
"method" : "GET",
"name" : "tasks",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get datacenter options.",
"method" : "GET",
"name" : "get_options",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set datacenter options.",
"method" : "PUT",
"name" : "set_options",
"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. Running HA Services will always get stopped first on shutdown.",
+ "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"
+ "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."
+ "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=<freeze|failover|conditional>"
+ "typetext" : "shutdown_policy=<enum>"
},
"http_proxy" : {
"description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')",
"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"
{
"info" : {
"GET" : {
- "description" : "Get cluster status informations.",
+ "allowtoken" : 1,
+ "description" : "Get cluster status information.",
"method" : "GET",
"name" : "get_status",
"parameters" : {
"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"
{
"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",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Cluster index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete rule.",
"method" : "DELETE",
"name" : "delete_rule",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get single rule data.",
"method" : "GET",
"name" : "get_rule",
"optional" : 1,
"type" : "integer"
},
+ "icmp-type" : {
+ "optional" : 1,
+ "type" : "string"
+ },
"iface" : {
"optional" : 1,
"type" : "string"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Modify rule data.",
"method" : "PUT",
"name" : "update_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List rules.",
"method" : "GET",
"name" : "get_rules",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new rule.",
"method" : "POST",
"name" : "create_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network alias.",
"method" : "DELETE",
"name" : "remove_alias",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read alias.",
"method" : "GET",
"name" : "read_alias",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network alias.",
"method" : "PUT",
"name" : "update_alias",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List aliases",
"method" : "GET",
"name" : "get_aliases",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create IP or Network Alias.",
"method" : "POST",
"name" : "create_alias",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network from IPSet.",
"method" : "DELETE",
"name" : "remove_ip",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read IP or Network settings from IPSet.",
"method" : "GET",
"name" : "read_ip",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network settings",
"method" : "PUT",
"name" : "update_ip",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete IPSet",
"method" : "DELETE",
"name" : "delete_ipset",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSet content",
"method" : "GET",
"name" : "get_ipset",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Add IP or Network to IPSet.",
"method" : "POST",
"name" : "create_ip",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSets",
"method" : "GET",
"name" : "ipset_index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new IPSet",
"method" : "POST",
"name" : "create_ipset",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get VM firewall options.",
"method" : "GET",
"name" : "get_options",
"returns" : {
"properties" : {
"dhcp" : {
+ "default" : 0,
"description" : "Enable DHCP.",
"optional" : 1,
"type" : "boolean"
},
"enable" : {
+ "default" : 0,
"description" : "Enable/disable firewall rules.",
"optional" : 1,
"type" : "boolean"
"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"
},
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set Firewall options.",
"method" : "PUT",
"name" : "set_options",
"typetext" : "<string>"
},
"dhcp" : {
+ "default" : 0,
"description" : "Enable DHCP.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<string>"
},
"enable" : {
+ "default" : 0,
"description" : "Enable/disable firewall rules.",
"optional" : 1,
"type" : "boolean",
"type" : "string"
},
"macfilter" : {
+ "default" : 0,
"description" : "Enable/disable MAC address filter.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
},
"ndp" : {
- "description" : "Enable NDP.",
+ "default" : 0,
+ "description" : "Enable NDP (Neighbor Discovery Protocol).",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read firewall log",
"method" : "GET",
"name" : "log",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
"method" : "GET",
"name" : "refs",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute fsfreeze-freeze.",
"method" : "POST",
"name" : "fsfreeze-freeze",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute fsfreeze-status.",
"method" : "POST",
"name" : "fsfreeze-status",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute fsfreeze-thaw.",
"method" : "POST",
"name" : "fsfreeze-thaw",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute fstrim.",
"method" : "POST",
"name" : "fstrim",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-fsinfo.",
"method" : "GET",
"name" : "get-fsinfo",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-host-name.",
"method" : "GET",
"name" : "get-host-name",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-memory-block-info.",
"method" : "GET",
"name" : "get-memory-block-info",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-memory-blocks.",
"method" : "GET",
"name" : "get-memory-blocks",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-osinfo.",
"method" : "GET",
"name" : "get-osinfo",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-time.",
"method" : "GET",
"name" : "get-time",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-timezone.",
"method" : "GET",
"name" : "get-timezone",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-users.",
"method" : "GET",
"name" : "get-users",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute get-vcpus.",
"method" : "GET",
"name" : "get-vcpus",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute info.",
"method" : "GET",
"name" : "info",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Execute network-get-interfaces.",
"method" : "GET",
"name" : "network-get-interfaces",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute ping.",
"method" : "POST",
"name" : "ping",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute shutdown.",
"method" : "POST",
"name" : "shutdown",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute suspend-disk.",
"method" : "POST",
"name" : "suspend-disk",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute suspend-hybrid.",
"method" : "POST",
"name" : "suspend-hybrid",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute suspend-ram.",
"method" : "POST",
"name" : "suspend-ram",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Sets the password for the given user to the given password",
"method" : "POST",
"name" : "set-user-password",
},
"password" : {
"description" : "The new password.",
- "maxLength" : 64,
+ "maxLength" : 1024,
"minLength" : 5,
"type" : "string",
"typetext" : "<string>"
{
"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",
"command" : {
"description" : "The command as a list of program + arguments",
"format" : "string-alist",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Gets the status of the given pid started by the guest-agent",
"method" : "GET",
"name" : "exec-status",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Reads the given file via guest agent. Is limited to 16777216 bytes.",
"method" : "GET",
"name" : "file-read",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Writes the given file via guest agent.",
"method" : "POST",
"name" : "file-write",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Qemu Agent command index.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute Qemu Guest Agent commands.",
"method" : "POST",
"name" : "agent",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read VM RRD statistics (returns PNG)",
"method" : "GET",
"name" : "rrd",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read VM RRD statistics",
"method" : "GET",
"name" : "rrddata",
{
"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" : {
},
"proxyto" : "node",
"returns" : {
- "description" : "The current VM configuration.",
+ "description" : "The VM configuration.",
"properties" : {
"acpi" : {
"default" : 1,
},
"fstrim_cloned_disks" : {
"default" : 0,
- "description" : "Run fstrim after cloning/moving a disk.",
+ "description" : "Run fstrim after moving a disk or migrating the VM.",
"optional" : 1,
"type" : "boolean"
+ },
+ "type" : {
+ "default" : "virtio",
+ "description" : "Select the agent type",
+ "enum" : [
+ "virtio",
+ "isa"
+ ],
+ "optional" : 1,
+ "type" : "string"
}
},
"optional" : 1,
"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",
+ "none"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "optional" : 1,
+ "type" : "string"
+ },
"autostart" : {
"default" : 0,
"description" : "Automatic restart after crash (currently ignored).",
"type" : "string"
},
"boot" : {
- "default" : "cdn",
- "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).",
+ "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+ "format" : "pve-qm-boot",
"optional" : 1,
- "pattern" : "[acdn]{1,4}",
"type" : "string"
},
"bootdisk" : {
- "description" : "Enable booting from specified disk.",
+ "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.",
"format" : "pve-qm-bootdisk",
"optional" : 1,
"pattern" : "(ide|sata|scsi|virtio)\\d+",
"description" : "Specifies the cloud-init configuration format. The default depends on the configured operating system type (`ostype`. We use the `nocloud` format for Linux, and `configdrive2` for windows.",
"enum" : [
"configdrive2",
- "nocloud"
+ "nocloud",
+ "opennebula"
],
"optional" : 1,
"type" : "string"
},
"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"
- },
- "hv-vendor-id" : {
- "description" : "The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.",
- "format_description" : "vendor-id",
- "optional" : 1,
- "pattern" : "(?^:[a-zA-Z0-9]{1,12})",
- "type" : "string"
- }
- },
+ "format" : "pve-vm-cpu-conf",
"optional" : 1,
"type" : "string"
},
"verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
},
"description" : {
- "description" : "Description for the VM. Only used on the configuration web interface. This is saved as comment inside the configuration file.",
+ "description" : "Description for the VM. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string"
},
"type" : "string"
},
"efidisk0" : {
- "description" : "Configure a Disk for storing EFI vars",
+ "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
"format" : {
"file" : {
"default_key" : 1,
"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",
"type" : "string"
},
"ide[n]" : {
- "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
+ "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
"type" : "string"
},
"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",
+ "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\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
"format" : "pve-qm-ipconfig",
"optional" : 1,
"type" : "string"
"optional" : 1,
"type" : "string"
},
+ "keephugepages" : {
+ "default" : 0,
+ "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
"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.",
"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" : {
"type" : "string"
},
"nameserver" : {
- "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"format" : "address-list",
"optional" : 1,
"type" : "string"
"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" : {
],
"type" : "string"
},
+ "mtu" : {
+ "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU",
+ "maximum" : 65520,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer"
+ },
"ne2k_isa" : {
"alias" : "macaddr",
"keyAlias" : "model"
],
"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/2019\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).",
"optional" : 1,
"pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+",
"type" : "string",
- "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"protection" : {
"default" : 0,
"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).",
+ "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
"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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
"type" : "string"
},
"searchdomain" : {
- "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"pattern" : "(/dev/.+|socket)",
"type" : "string",
- "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"shares" : {
"default" : 1000,
"smbios1" : {
"description" : "Specify SMBIOS type 1 fields.",
"format" : "pve-qm-smbios1",
- "maxLength" : 256,
+ "maxLength" : 512,
"optional" : 1,
"type" : "string"
},
"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",
},
"startdate" : {
"default" : "now",
- "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
+ "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
"optional" : 1,
"pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
"type" : "string",
"description" : "Enable/disable the USB tablet device.",
"optional" : 1,
"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)."
+ "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 (`qm set <vmid> --vga qxl`)."
+ },
+ "tags" : {
+ "description" : "Tags of the VM. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string"
},
"tdf" : {
"default" : 0,
},
"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"
},
"format" : {
"host" : {
"default_key" : 1,
- "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
+ "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
"format" : "pve-qm-usb-device",
"format_description" : "HOSTUSBDEVICE|spice",
"type" : "string"
},
"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"
}
"verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
},
"virtio[n]" : {
- "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).",
+ "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
"optional" : 1,
"pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])",
"type" : "string",
- "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done throug API/CLI create or update methods, but not when manually editing the config file."
+ "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file."
},
"vmstatestorage" : {
"description" : "Default storage for VM state volumes/files.",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Set virtual machine options (asynchrounous API).",
"method" : "POST",
"name" : "update_vm_async",
},
"fstrim_cloned_disks" : {
"default" : 0,
- "description" : "Run fstrim after cloning/moving a disk.",
+ "description" : "Run fstrim after moving a disk or migrating the VM.",
"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=<virtio|isa>]"
},
"arch" : {
"description" : "Virtual processor architecture. Defaults to the host.",
"typetext" : "<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",
+ "none"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "device=<ich9-intel-hda|intel-hda|AC97> [,driver=<spice|none>]"
+ },
"autostart" : {
"default" : 0,
"description" : "Automatic restart after crash (currently ignored).",
"type" : "string"
},
"boot" : {
- "default" : "cdn",
- "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).",
+ "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+ "format" : "pve-qm-boot",
"optional" : 1,
- "pattern" : "[acdn]{1,4}",
- "type" : "string"
+ "type" : "string",
+ "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
},
"bootdisk" : {
- "description" : "Enable booting from specified disk.",
+ "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.",
"format" : "pve-qm-bootdisk",
"optional" : 1,
"pattern" : "(ide|sata|scsi|virtio)\\d+",
"description" : "Specifies the cloud-init configuration format. The default depends on the configured operating system type (`ostype`. We use the `nocloud` format for Linux, and `configdrive2` for windows.",
"enum" : [
"configdrive2",
- "nocloud"
+ "nocloud",
+ "opennebula"
],
"optional" : 1,
"type" : "string"
},
"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"
- },
- "hv-vendor-id" : {
- "description" : "The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.",
- "format_description" : "vendor-id",
- "optional" : 1,
- "pattern" : "(?^:[a-zA-Z0-9]{1,12})",
- "type" : "string"
- }
- },
+ "format" : "pve-vm-cpu-conf",
"optional" : 1,
"type" : "string",
- "typetext" : "[cputype=]<enum> [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>]"
+ "typetext" : "[[cputype=]<string>] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>] [,phys-bits=<8-64|host>] [,reported-model=<enum>]"
},
"cpulimit" : {
"default" : 0,
"typetext" : "<string>"
},
"description" : {
- "description" : "Description for the VM. Only used on the configuration web interface. This is saved as comment inside the configuration file.",
+ "description" : "Description for the VM. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"typetext" : "<string>"
},
"efidisk0" : {
- "description" : "Configure a Disk for storing EFI vars",
+ "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
"format" : {
"file" : {
"default_key" : 1,
"format" : "pve-qm-hostpci",
"optional" : 1,
"type" : "string",
- "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
+ "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
},
"hotplug" : {
"default" : "network,disk,usb",
"type" : "string"
},
"ide[n]" : {
- "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
+ "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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",
+ "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\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
"format" : "pve-qm-ipconfig",
"optional" : 1,
"type" : "string",
"type" : "string",
"typetext" : "size=<integer> [,name=<string>]"
},
+ "keephugepages" : {
+ "default" : 0,
+ "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"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.",
"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" : {
"typetext" : "<string>"
},
"nameserver" : {
- "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"format" : "address-list",
"optional" : 1,
"type" : "string",
"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" : {
],
"type" : "string"
},
+ "mtu" : {
+ "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU",
+ "maximum" : 65520,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer"
+ },
"ne2k_isa" : {
"alias" : "macaddr",
"keyAlias" : "model"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+ "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
},
"node" : {
"description" : "The cluster node name.",
],
"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/2019\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).",
"optional" : 1,
"pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+",
"type" : "string",
- "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"protection" : {
"default" : 0,
"type" : "string",
"typetext" : "<string>"
},
+ "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=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
+ },
"sata[n]" : {
- "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
+ "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
},
"scsihw" : {
"default" : "lsi",
"type" : "string"
},
"searchdomain" : {
- "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"optional" : 1,
"pattern" : "(/dev/.+|socket)",
"type" : "string",
- "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"shares" : {
"default" : 1000,
"smbios1" : {
"description" : "Specify SMBIOS type 1 fields.",
"format" : "pve-qm-smbios1",
- "maxLength" : 256,
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
- "typetext" : "[family=<string>] [,manufacturer=<string>] [,product=<string>] [,serial=<string>] [,sku=<string>] [,uuid=<UUID>] [,version=<string>]"
+ "typetext" : "[base64=<1|0>] [,family=<Base64 encoded string>] [,manufacturer=<Base64 encoded string>] [,product=<Base64 encoded string>] [,serial=<Base64 encoded string>] [,sku=<Base64 encoded string>] [,uuid=<UUID>] [,version=<Base64 encoded string>]"
},
"smp" : {
"default" : 1,
"type" : "integer",
"typetext" : "<integer> (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=<off|all|filter>]"
+ },
"sshkeys" : {
"description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).",
"format" : "urlencoded",
},
"startdate" : {
"default" : "now",
- "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
+ "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
"optional" : 1,
"pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
"type" : "string",
"optional" : 1,
"type" : "boolean",
"typetext" : "<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)."
+ "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 (`qm set <vmid> --vga qxl`)."
+ },
+ "tags" : {
+ "description" : "Tags of the VM. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
},
"tdf" : {
"default" : 0,
},
"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" : "<string>"
+ "typetext" : "[file=]<volume>"
},
"usb[n]" : {
"description" : "Configure an USB device (n is 0 to 4).",
"format" : {
"host" : {
"default_key" : 1,
- "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
+ "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
"format" : "pve-qm-usb-device",
"format_description" : "HOSTUSBDEVICE|spice",
"type" : "string"
},
"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"
}
"verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
},
"virtio[n]" : {
- "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).",
+ "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
},
"vmgenid" : {
"default" : "1 (autogenerated)",
"optional" : 1,
"pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])",
"type" : "string",
- "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done throug API/CLI create or update methods, but not when manually editing the config file."
+ "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file."
},
"vmid" : {
"description" : "The (unique) ID of the VM.",
"VM.Config.Memory",
"VM.Config.Network",
"VM.Config.HWType",
- "VM.Config.Options"
+ "VM.Config.Options",
+ "VM.Config.Cloudinit"
],
"any",
1
}
},
"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",
},
"fstrim_cloned_disks" : {
"default" : 0,
- "description" : "Run fstrim after cloning/moving a disk.",
+ "description" : "Run fstrim after moving a disk or migrating the VM.",
"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=<virtio|isa>]"
},
"arch" : {
"description" : "Virtual processor architecture. Defaults to the host.",
"typetext" : "<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",
+ "none"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "device=<ich9-intel-hda|intel-hda|AC97> [,driver=<spice|none>]"
+ },
"autostart" : {
"default" : 0,
"description" : "Automatic restart after crash (currently ignored).",
"type" : "string"
},
"boot" : {
- "default" : "cdn",
- "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).",
+ "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+ "format" : "pve-qm-boot",
"optional" : 1,
- "pattern" : "[acdn]{1,4}",
- "type" : "string"
+ "type" : "string",
+ "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
},
"bootdisk" : {
- "description" : "Enable booting from specified disk.",
+ "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.",
"format" : "pve-qm-bootdisk",
"optional" : 1,
"pattern" : "(ide|sata|scsi|virtio)\\d+",
"description" : "Specifies the cloud-init configuration format. The default depends on the configured operating system type (`ostype`. We use the `nocloud` format for Linux, and `configdrive2` for windows.",
"enum" : [
"configdrive2",
- "nocloud"
+ "nocloud",
+ "opennebula"
],
"optional" : 1,
"type" : "string"
},
"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"
- },
- "hv-vendor-id" : {
- "description" : "The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.",
- "format_description" : "vendor-id",
- "optional" : 1,
- "pattern" : "(?^:[a-zA-Z0-9]{1,12})",
- "type" : "string"
- }
- },
+ "format" : "pve-vm-cpu-conf",
"optional" : 1,
"type" : "string",
- "typetext" : "[cputype=]<enum> [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>]"
+ "typetext" : "[[cputype=]<string>] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>] [,phys-bits=<8-64|host>] [,reported-model=<enum>]"
},
"cpulimit" : {
"default" : 0,
"typetext" : "<string>"
},
"description" : {
- "description" : "Description for the VM. Only used on the configuration web interface. This is saved as comment inside the configuration file.",
+ "description" : "Description for the VM. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"typetext" : "<string>"
},
"efidisk0" : {
- "description" : "Configure a Disk for storing EFI vars",
+ "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
"format" : {
"file" : {
"default_key" : 1,
"format" : "pve-qm-hostpci",
"optional" : 1,
"type" : "string",
- "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
+ "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
},
"hotplug" : {
"default" : "network,disk,usb",
"type" : "string"
},
"ide[n]" : {
- "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
+ "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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",
+ "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\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
"format" : "pve-qm-ipconfig",
"optional" : 1,
"type" : "string",
"type" : "string",
"typetext" : "size=<integer> [,name=<string>]"
},
+ "keephugepages" : {
+ "default" : 0,
+ "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"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.",
"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" : {
"typetext" : "<string>"
},
"nameserver" : {
- "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"format" : "address-list",
"optional" : 1,
"type" : "string",
"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" : {
],
"type" : "string"
},
+ "mtu" : {
+ "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU",
+ "maximum" : 65520,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer"
+ },
"ne2k_isa" : {
"alias" : "macaddr",
"keyAlias" : "model"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+ "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
},
"node" : {
"description" : "The cluster node name.",
],
"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/2019\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).",
"optional" : 1,
"pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+",
"type" : "string",
- "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"protection" : {
"default" : 0,
"type" : "string",
"typetext" : "<string>"
},
+ "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=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
+ },
"sata[n]" : {
- "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
+ "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
},
"scsihw" : {
"default" : "lsi",
"type" : "string"
},
"searchdomain" : {
- "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"optional" : 1,
"pattern" : "(/dev/.+|socket)",
"type" : "string",
- "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"shares" : {
"default" : 1000,
"smbios1" : {
"description" : "Specify SMBIOS type 1 fields.",
"format" : "pve-qm-smbios1",
- "maxLength" : 256,
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
- "typetext" : "[family=<string>] [,manufacturer=<string>] [,product=<string>] [,serial=<string>] [,sku=<string>] [,uuid=<UUID>] [,version=<string>]"
+ "typetext" : "[base64=<1|0>] [,family=<Base64 encoded string>] [,manufacturer=<Base64 encoded string>] [,product=<Base64 encoded string>] [,serial=<Base64 encoded string>] [,sku=<Base64 encoded string>] [,uuid=<UUID>] [,version=<Base64 encoded string>]"
},
"smp" : {
"default" : 1,
"type" : "integer",
"typetext" : "<integer> (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=<off|all|filter>]"
+ },
"sshkeys" : {
"description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).",
"format" : "urlencoded",
},
"startdate" : {
"default" : "now",
- "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
+ "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
"optional" : 1,
"pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
"type" : "string",
"optional" : 1,
"type" : "boolean",
"typetext" : "<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)."
+ "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 (`qm set <vmid> --vga qxl`)."
+ },
+ "tags" : {
+ "description" : "Tags of the VM. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
},
"tdf" : {
"default" : 0,
},
"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" : "<string>"
+ "typetext" : "[file=]<volume>"
},
"usb[n]" : {
"description" : "Configure an USB device (n is 0 to 4).",
"format" : {
"host" : {
"default_key" : 1,
- "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
+ "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
"format" : "pve-qm-usb-device",
"format_description" : "HOSTUSBDEVICE|spice",
"type" : "string"
},
"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"
}
"verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
},
"virtio[n]" : {
- "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).",
+ "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
},
"vmgenid" : {
"default" : "1 (autogenerated)",
"optional" : 1,
"pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])",
"type" : "string",
- "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done throug API/CLI create or update methods, but not when manually editing the config file."
+ "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file."
},
"vmid" : {
"description" : "The (unique) ID of the VM.",
"VM.Config.Memory",
"VM.Config.Network",
"VM.Config.HWType",
- "VM.Config.Options"
+ "VM.Config.Options",
+ "VM.Config.Cloudinit"
],
"any",
1
{
"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" : {
{
"info" : {
"PUT" : {
+ "allowtoken" : 1,
"description" : "Unlink/delete disk images.",
"method" : "PUT",
"name" : "unlink",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a TCP VNC proxy connections.",
"method" : "POST",
"name" : "vncproxy",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "generate-password" : {
+ "default" : 0,
+ "description" : "Generates a random password to be used as ticket instead of the API ticket.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"cert" : {
"type" : "string"
},
+ "password" : {
+ "description" : "Returned if requested with 'generate-password' param. Consists of printable ASCII characters ('!' .. '~').",
+ "optional" : 1,
+ "type" : "string"
+ },
"port" : {
"type" : "integer"
},
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a TCP proxy connections.",
"method" : "POST",
"name" : "termproxy",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Opens a weksocket for VNC traffic.",
"method" : "GET",
"name" : "vncwebsocket",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Returns a SPICE configuration to connect to the VM.",
"method" : "POST",
"name" : "spiceproxy",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get virtual machine status.",
"method" : "GET",
"name" : "vm_status",
"optional" : 1,
"type" : "string"
},
+ "running-machine" : {
+ "description" : "The currently running machine type (if running).",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "running-qemu" : {
+ "description" : "The currently running QEMU version (if running).",
+ "optional" : 1,
+ "type" : "string"
+ },
"spice" : {
"description" : "Qemu VGA configuration supports spice.",
"optional" : 1,
],
"type" : "string"
},
+ "tags" : {
+ "description" : "The current configured tags, if any",
+ "optional" : 1,
+ "type" : "string"
+ },
"uptime" : {
"description" : "Uptime.",
"optional" : 1,
{
"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" : "<string>"
+ },
"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" : {
"typetext" : "<string>"
},
"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" : "<string>"
},
+ "timeout" : {
+ "default" : "max(30, vm memory in GiB)",
+ "description" : "Wait maximal timeout seconds.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
"vmid" : {
"description" : "The (unique) ID of the VM.",
"format" : "pve-vmid",
{
"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",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Reset virtual machine.",
"method" : "POST",
"name" : "vm_reset",
{
"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",
{
"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" : "<string>"
+ },
+ "timeout" : {
+ "description" : "Wait maximal timeout seconds for the shutdown.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "vmid" : {
+ "description" : "The (unique) ID of the VM.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (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",
[
"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",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Resume virtual machine.",
"method" : "POST",
"name" : "vm_resume",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index",
"method" : "GET",
"name" : "vmcmdidx",
{
"info" : {
"PUT" : {
+ "allowtoken" : 1,
"description" : "Send key event to virtual machine.",
"method" : "PUT",
"name" : "vm_sendkey",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Check if feature for virtual machine is available.",
"method" : "GET",
"name" : "vm_feature",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a copy of virtual machine/template.",
"method" : "POST",
"name" : "clone_vm",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Move volume to different storage.",
"method" : "POST",
"name" : "move_vm_disk",
"scsi11",
"scsi12",
"scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
"virtio0",
"virtio1",
"virtio2",
},
{
"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" : "<string>"
+ },
+ "target" : {
+ "description" : "Target node.",
+ "format" : "pve-node",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "vmid" : {
+ "description" : "The (unique) ID of the VM.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (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",
"typetext" : "<string>"
},
"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" : "<boolean>"
"typetext" : "<string>"
},
"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" : "<string>"
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute Qemu monitor commands.",
"method" : "POST",
"name" : "monitor",
{
"info" : {
"PUT" : {
+ "allowtoken" : 1,
"description" : "Extend volume size.",
"method" : "PUT",
"name" : "resize_vm",
"scsi11",
"scsi12",
"scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
"virtio0",
"virtio1",
"virtio2",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get snapshot configuration",
"method" : "GET",
"name" : "get_snapshot_config",
"/vms/{vmid}",
[
"VM.Snapshot",
- "VM.Snapshot.Rollback"
+ "VM.Snapshot.Rollback",
+ "VM.Audit"
],
"any",
1
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update snapshot metadata.",
"method" : "PUT",
"name" : "update_snapshot_config",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Rollback VM state to specified snapshot.",
"method" : "POST",
"name" : "rollback",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete a VM snapshot.",
"method" : "DELETE",
"name" : "delsnapshot",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "",
"method" : "GET",
"name" : "snapshot_cmd_idx",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List all snapshots.",
"method" : "GET",
"name" : "snapshot_list",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Snapshot a VM.",
"method" : "POST",
"name" : "snapshot",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a Template.",
"method" : "POST",
"name" : "template",
"scsi11",
"scsi12",
"scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
"virtio0",
"virtio1",
"virtio2",
"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" : "<string>"
+ },
+ "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" : "<integer> (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" : {
- "description" : "Destroy the vm (also delete all used/owned volumes).",
+ "allowtoken" : 1,
+ "description" : "Destroy the VM and all used/owned volumes. Removes any VM specific permissions and firewall rules",
"method" : "DELETE",
"name" : "destroy_vm",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "destroy-unreferenced-disks" : {
+ "default" : 0,
+ "description" : "If set, destroy additionally all disks not referenced in the config but with a matching VMID from all enabled storages.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
},
+ "purge" : {
+ "description" : "Remove VMID from configurations, like backup & replication jobs and HA.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"skiplock" : {
"description" : "Ignore locks - only root is allowed to use this option.",
"optional" : 1,
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index",
"method" : "GET",
"name" : "vmdiridx",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Virtual machine index (per node).",
"method" : "GET",
"name" : "vmlist",
"optional" : 1,
"type" : "string"
},
+ "running-machine" : {
+ "description" : "The currently running machine type (if running).",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "running-qemu" : {
+ "description" : "The currently running QEMU version (if running).",
+ "optional" : 1,
+ "type" : "string"
+ },
"status" : {
"description" : "Qemu process status.",
"enum" : [
],
"type" : "string"
},
+ "tags" : {
+ "description" : "The current configured tags, if any",
+ "optional" : 1,
+ "type" : "string"
+ },
"uptime" : {
"description" : "Uptime.",
"optional" : 1,
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create or restore a virtual machine.",
"method" : "POST",
"name" : "create_vm",
},
"fstrim_cloned_disks" : {
"default" : 0,
- "description" : "Run fstrim after cloning/moving a disk.",
+ "description" : "Run fstrim after moving a disk or migrating the VM.",
"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=<virtio|isa>]"
},
"arch" : {
"description" : "Virtual processor architecture. Defaults to the host.",
"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",
"typetext" : "<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",
+ "none"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "device=<ich9-intel-hda|intel-hda|AC97> [,driver=<spice|none>]"
+ },
"autostart" : {
"default" : 0,
"description" : "Automatic restart after crash (currently ignored).",
"type" : "string"
},
"boot" : {
- "default" : "cdn",
- "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).",
+ "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+ "format" : "pve-qm-boot",
"optional" : 1,
- "pattern" : "[acdn]{1,4}",
- "type" : "string"
+ "type" : "string",
+ "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
},
"bootdisk" : {
- "description" : "Enable booting from specified disk.",
+ "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.",
"format" : "pve-qm-bootdisk",
"optional" : 1,
"pattern" : "(ide|sata|scsi|virtio)\\d+",
"description" : "Specifies the cloud-init configuration format. The default depends on the configured operating system type (`ostype`. We use the `nocloud` format for Linux, and `configdrive2` for windows.",
"enum" : [
"configdrive2",
- "nocloud"
+ "nocloud",
+ "opennebula"
],
"optional" : 1,
"type" : "string"
},
"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"
- },
- "hv-vendor-id" : {
- "description" : "The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.",
- "format_description" : "vendor-id",
- "optional" : 1,
- "pattern" : "(?^:[a-zA-Z0-9]{1,12})",
- "type" : "string"
- }
- },
+ "format" : "pve-vm-cpu-conf",
"optional" : 1,
"type" : "string",
- "typetext" : "[cputype=]<enum> [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>]"
+ "typetext" : "[[cputype=]<string>] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>] [,phys-bits=<8-64|host>] [,reported-model=<enum>]"
},
"cpulimit" : {
"default" : 0,
"verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
},
"description" : {
- "description" : "Description for the VM. Only used on the configuration web interface. This is saved as comment inside the configuration file.",
+ "description" : "Description for the VM. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
"efidisk0" : {
- "description" : "Configure a Disk for storing EFI vars",
+ "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
"format" : {
"file" : {
"default_key" : 1,
"format" : "pve-qm-hostpci",
"optional" : 1,
"type" : "string",
- "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
+ "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,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"
},
"hotplug" : {
"default" : "network,disk,usb",
"type" : "string"
},
"ide[n]" : {
- "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
+ "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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",
+ "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\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
"format" : "pve-qm-ipconfig",
"optional" : 1,
"type" : "string",
"type" : "string",
"typetext" : "size=<integer> [,name=<string>]"
},
+ "keephugepages" : {
+ "default" : 0,
+ "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"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.",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "live-restore" : {
+ "description" : "Start the VM immediately from the backup and restore in background. PBS only.",
+ "optional" : 1,
+ "requires" : "archive",
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"localtime" : {
"description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.",
"optional" : 1,
"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" : {
"typetext" : "<string>"
},
"nameserver" : {
- "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"format" : "address-list",
"optional" : 1,
"type" : "string",
"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" : {
],
"type" : "string"
},
+ "mtu" : {
+ "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU",
+ "maximum" : 65520,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer"
+ },
"ne2k_isa" : {
"alias" : "macaddr",
"keyAlias" : "model"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+ "typetext" : "[model=]<enum> [,bridge=<bridge>] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=<XX:XX:XX:XX:XX:XX>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
},
"node" : {
"description" : "The cluster node name.",
],
"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/2019\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).",
"optional" : 1,
"pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+",
"type" : "string",
- "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"pool" : {
"description" : "Add the VM to the specified pool.",
"type" : "boolean",
"typetext" : "<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",
+ "typetext" : "[source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
+ },
"sata[n]" : {
- "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
+ "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
},
"scsihw" : {
"default" : "lsi",
"type" : "string"
},
"searchdomain" : {
- "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
+ "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"optional" : 1,
"pattern" : "(/dev/.+|socket)",
"type" : "string",
- "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+ "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
},
"shares" : {
"default" : 1000,
"smbios1" : {
"description" : "Specify SMBIOS type 1 fields.",
"format" : "pve-qm-smbios1",
- "maxLength" : 256,
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
- "typetext" : "[family=<string>] [,manufacturer=<string>] [,product=<string>] [,serial=<string>] [,sku=<string>] [,uuid=<UUID>] [,version=<string>]"
+ "typetext" : "[base64=<1|0>] [,family=<Base64 encoded string>] [,manufacturer=<Base64 encoded string>] [,product=<Base64 encoded string>] [,serial=<Base64 encoded string>] [,sku=<Base64 encoded string>] [,uuid=<UUID>] [,version=<Base64 encoded string>]"
},
"smp" : {
"default" : 1,
"type" : "integer",
"typetext" : "<integer> (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=<off|all|filter>]"
+ },
"sshkeys" : {
"description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).",
"format" : "urlencoded",
},
"startdate" : {
"default" : "now",
- "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
+ "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.",
"optional" : 1,
"pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
"type" : "string",
"optional" : 1,
"type" : "boolean",
"typetext" : "<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)."
+ "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 (`qm set <vmid> --vga qxl`)."
+ },
+ "tags" : {
+ "description" : "Tags of the VM. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
},
"tdf" : {
"default" : 0,
},
"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" : "<string>"
+ "typetext" : "[file=]<volume>"
},
"usb[n]" : {
"description" : "Configure an USB device (n is 0 to 4).",
"format" : {
"host" : {
"default_key" : 1,
- "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
+ "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
"format" : "pve-qm-usb-device",
"format_description" : "HOSTUSBDEVICE|spice",
"type" : "string"
},
"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"
}
"verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
},
"virtio[n]" : {
- "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).",
+ "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"aio" : {
"description" : "AIO type to use.",
"enum" : [
"native",
- "threads"
+ "threads",
+ "io_uring"
],
"optional" : 1,
"type" : "string"
},
"optional" : 1,
"type" : "string",
- "typetext" : "[file=]<volume> [,aio=<native|threads>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+ "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
},
"vmgenid" : {
"default" : "1 (autogenerated)",
"optional" : 1,
"pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])",
"type" : "string",
- "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done throug API/CLI create or update methods, but not when manually editing the config file."
+ "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file."
},
"vmid" : {
"description" : "The (unique) ID of the VM.",
{
"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" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
},
"cores" : {
"description" : "The number of cores assigned to the container. A container can use all available cores by default.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 1,
"optional" : 1,
"type" : "integer"
"cpulimit" : {
"default" : 0,
"description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 0,
"optional" : 1,
"type" : "number"
"optional" : 1,
"type" : "integer"
},
+ "debug" : {
+ "default" : 0,
+ "description" : "Try to be more verbose. For now this only enables debug log-level on start.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
"description" : {
- "description" : "Container description. Only used on the configuration web interface.",
+ "description" : "Description for the Container. Shown in the web-interface CT's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string"
},
"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.",
"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;...",
"description" : "Lock/unlock the VM.",
"enum" : [
"backup",
+ "create",
+ "destroyed",
"disk",
+ "fstrim",
"migrate",
"mounted",
"rollback",
"type" : "integer"
},
"mp[n]" : {
- "description" : "Use volume as container mount point.",
+ "description" : "Use volume as container mount point. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"acl" : {
"description" : "Explicitly enable or disable ACL support.",
"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",
},
"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.",
- "format" : "address-list",
+ "format" : "lxc-ip-with-ll-iface-list",
"optional" : 1,
"type" : "string"
},
"description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/<ostype>.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.",
"enum" : [
"debian",
+ "devuan",
"ubuntu",
"centos",
"fedora",
"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,
"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.",
"optional" : 1,
"type" : "boolean"
},
+ "timezone" : {
+ "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab",
+ "format" : "pve-ct-timezone",
+ "optional" : 1,
+ "type" : "string"
+ },
"tty" : {
"default" : 2,
"description" : "Specify the number of tty available to the container",
},
"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"
}
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set container options.",
"method" : "PUT",
"name" : "update_vm",
},
"cores" : {
"description" : "The number of cores assigned to the container. A container can use all available cores by default.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 1,
"optional" : 1,
"type" : "integer",
- "typetext" : "<integer> (1 - 128)"
+ "typetext" : "<integer> (1 - 8192)"
},
"cpulimit" : {
"default" : 0,
"description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 0,
"optional" : 1,
"type" : "number",
- "typetext" : "<number> (0 - 128)"
+ "typetext" : "<number> (0 - 8192)"
},
"cpuunits" : {
"default" : 1024,
"type" : "integer",
"typetext" : "<integer> (0 - 500000)"
},
+ "debug" : {
+ "default" : 0,
+ "description" : "Try to be more verbose. For now this only enables debug log-level on start.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"delete" : {
"description" : "A list of settings you want to delete.",
"format" : "pve-configid-list",
"typetext" : "<string>"
},
"description" : {
- "description" : "Container description. Only used on the configuration web interface.",
+ "description" : "Description for the Container. Shown in the web-interface CT's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"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.",
"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,
"type" : "string",
- "typetext" : "[fuse=<1|0>] [,keyctl=<1|0>] [,mount=<fstype;fstype;...>] [,nesting=<1|0>]"
+ "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=<fstype;fstype;...>] [,nesting=<1|0>]"
},
"hookscript" : {
"description" : "Script that will be exectued during various steps in the containers lifetime.",
"description" : "Lock/unlock the VM.",
"enum" : [
"backup",
+ "create",
+ "destroyed",
"disk",
+ "fstrim",
"migrate",
"mounted",
"rollback",
"typetext" : "<integer> (16 - N)"
},
"mp[n]" : {
- "description" : "Use volume as container mount point.",
+ "description" : "Use volume as container mount point. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"acl" : {
"description" : "Explicitly enable or disable ACL support.",
"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",
},
"optional" : 1,
"type" : "string",
- "typetext" : "[volume=]<volume> ,mp=<Path> [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
+ "typetext" : "[volume=]<volume> ,mp=<Path> [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
},
"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.",
- "format" : "address-list",
+ "format" : "lxc-ip-with-ll-iface-list",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/<ostype>.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.",
"enum" : [
"debian",
+ "devuan",
"ubuntu",
"centos",
"fedora",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "revert" : {
+ "description" : "Revert a pending change.",
+ "format" : "pve-configid-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"rootfs" : {
"description" : "Use volume as container root.",
"format" : {
"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,
},
"optional" : 1,
"type" : "string",
- "typetext" : "[volume=]<volume> [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
+ "typetext" : "[volume=]<volume> [,acl=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
},
"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.",
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "tags" : {
+ "description" : "Tags of the Container. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"template" : {
"default" : 0,
"description" : "Enable/disable Template.",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "timezone" : {
+ "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab",
+ "format" : "pve-ct-timezone",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"tty" : {
"default" : 2,
"description" : "Specify the number of tty available to the container",
},
"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" : "<string>"
+ "typetext" : "[volume=]<volume>"
},
"vmid" : {
"description" : "The (unique) ID of the VM.",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get virtual machine status.",
"method" : "GET",
"name" : "vm_status",
],
"type" : "string"
},
+ "tags" : {
+ "description" : "The current configured tags, if any.",
+ "optional" : 1,
+ "type" : "string"
+ },
"uptime" : {
"description" : "Uptime.",
"optional" : 1,
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Start the container.",
"method" : "POST",
"name" : "vm_start",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "debug" : {
+ "default" : 0,
+ "description" : "If set, enables very verbose debug log-level on start.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Stop the container. This will abruptly stop all processes running in the container.",
"method" : "POST",
"name" : "vm_stop",
{
"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",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Suspend the container.",
"method" : "POST",
"name" : "vm_suspend",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Resume the container.",
"method" : "POST",
"name" : "vm_resume",
"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" : "<string>"
+ },
+ "timeout" : {
+ "description" : "Wait maximal timeout seconds for the shutdown.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "vmid" : {
+ "description" : "The (unique) ID of the VM.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (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",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Rollback LXC state to specified snapshot.",
"method" : "POST",
"name" : "rollback",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get snapshot configuration",
"method" : "GET",
"name" : "get_snapshot_config",
"/vms/{vmid}",
[
"VM.Snapshot",
- "VM.Snapshot.Rollback"
+ "VM.Snapshot.Rollback",
+ "VM.Audit"
],
"any",
1
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update snapshot metadata.",
"method" : "PUT",
"name" : "update_snapshot_config",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete a LXC snapshot.",
"method" : "DELETE",
"name" : "delsnapshot",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "",
"method" : "GET",
"name" : "snapshot_cmd_idx",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List all snapshots.",
"method" : "GET",
"name" : "list",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Snapshot a container.",
"method" : "POST",
"name" : "snapshot",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete rule.",
"method" : "DELETE",
"name" : "delete_rule",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get single rule data.",
"method" : "GET",
"name" : "get_rule",
"optional" : 1,
"type" : "integer"
},
+ "icmp-type" : {
+ "optional" : 1,
+ "type" : "string"
+ },
"iface" : {
"optional" : 1,
"type" : "string"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Modify rule data.",
"method" : "PUT",
"name" : "update_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List rules.",
"method" : "GET",
"name" : "get_rules",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new rule.",
"method" : "POST",
"name" : "create_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network alias.",
"method" : "DELETE",
"name" : "remove_alias",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read alias.",
"method" : "GET",
"name" : "read_alias",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network alias.",
"method" : "PUT",
"name" : "update_alias",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List aliases",
"method" : "GET",
"name" : "get_aliases",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create IP or Network Alias.",
"method" : "POST",
"name" : "create_alias",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Remove IP or Network from IPSet.",
"method" : "DELETE",
"name" : "remove_ip",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read IP or Network settings from IPSet.",
"method" : "GET",
"name" : "read_ip",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update IP or Network settings",
"method" : "PUT",
"name" : "update_ip",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete IPSet",
"method" : "DELETE",
"name" : "delete_ipset",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSet content",
"method" : "GET",
"name" : "get_ipset",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Add IP or Network to IPSet.",
"method" : "POST",
"name" : "create_ip",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List IPSets",
"method" : "GET",
"name" : "ipset_index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new IPSet",
"method" : "POST",
"name" : "create_ipset",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get VM firewall options.",
"method" : "GET",
"name" : "get_options",
"returns" : {
"properties" : {
"dhcp" : {
+ "default" : 0,
"description" : "Enable DHCP.",
"optional" : 1,
"type" : "boolean"
},
"enable" : {
+ "default" : 0,
"description" : "Enable/disable firewall rules.",
"optional" : 1,
"type" : "boolean"
"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"
},
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set Firewall options.",
"method" : "PUT",
"name" : "set_options",
"typetext" : "<string>"
},
"dhcp" : {
+ "default" : 0,
"description" : "Enable DHCP.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<string>"
},
"enable" : {
+ "default" : 0,
"description" : "Enable/disable firewall rules.",
"optional" : 1,
"type" : "boolean",
"type" : "string"
},
"macfilter" : {
+ "default" : 0,
"description" : "Enable/disable MAC address filter.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
},
"ndp" : {
- "description" : "Enable NDP.",
+ "default" : 0,
+ "description" : "Enable NDP (Neighbor Discovery Protocol).",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read firewall log",
"method" : "GET",
"name" : "log",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
"method" : "GET",
"name" : "refs",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read VM RRD statistics (returns PNG)",
"method" : "GET",
"name" : "rrd",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read VM RRD statistics",
"method" : "GET",
"name" : "rrddata",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a TCP VNC proxy connections.",
"method" : "POST",
"name" : "vncproxy",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a TCP proxy connection.",
"method" : "POST",
"name" : "termproxy",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Opens a weksocket for VNC traffic.",
"method" : "GET",
"name" : "vncwebsocket",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Returns a SPICE configuration to connect to the CT.",
"method" : "POST",
"name" : "spiceproxy",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Migrate the container to another node. Creates a new migration task.",
"method" : "POST",
"name" : "migrate_vm",
"type" : "number",
"typetext" : "<number> (0 - N)"
},
- "force" : {
- "description" : "Force migration despite local bind / device mounts. NOTE: deprecated, use 'shared' property of mount point instead.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Check if feature for virtual machine is available.",
"method" : "GET",
"name" : "vm_feature",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a Template.",
"method" : "POST",
"name" : "template",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a container clone/copy",
"method" : "POST",
"name" : "clone_vm",
{
"info" : {
"PUT" : {
+ "allowtoken" : 1,
"description" : "Resize a container mount point.",
"method" : "PUT",
"name" : "resize_vm",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Move a rootfs-/mp-volume to a different storage",
"method" : "POST",
"name" : "move_volume",
"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" : "<string>"
+ },
+ "vmid" : {
+ "description" : "The (unique) ID of the VM.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (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" : {
+ "destroy-unreferenced-disks" : {
+ "description" : "If set, destroy additionally all disks with the VMID from all enabled storages which are not referenced in the config.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "force" : {
+ "default" : 0,
+ "description" : "Force destroy, even if running.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
},
+ "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" : "<boolean>"
+ },
"vmid" : {
"description" : "The (unique) ID of the VM.",
"format" : "pve-vmid",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index",
"method" : "GET",
"name" : "vmdiridx",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "LXC container index (per node).",
"method" : "GET",
"name" : "vmlist",
],
"type" : "string"
},
+ "tags" : {
+ "description" : "The current configured tags, if any.",
+ "optional" : 1,
+ "type" : "string"
+ },
"uptime" : {
"description" : "Uptime.",
"optional" : 1,
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create or restore a container.",
"method" : "POST",
"name" : "create_vm",
},
"cores" : {
"description" : "The number of cores assigned to the container. A container can use all available cores by default.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 1,
"optional" : 1,
"type" : "integer",
- "typetext" : "<integer> (1 - 128)"
+ "typetext" : "<integer> (1 - 8192)"
},
"cpulimit" : {
"default" : 0,
"description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.",
- "maximum" : 128,
+ "maximum" : 8192,
"minimum" : 0,
"optional" : 1,
"type" : "number",
- "typetext" : "<number> (0 - 128)"
+ "typetext" : "<number> (0 - 8192)"
},
"cpuunits" : {
"default" : 1024,
"type" : "integer",
"typetext" : "<integer> (0 - 500000)"
},
+ "debug" : {
+ "default" : 0,
+ "description" : "Try to be more verbose. For now this only enables debug log-level on start.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"description" : {
- "description" : "Container description. Only used on the configuration web interface.",
+ "description" : "Description for the Container. Shown in the web-interface CT's summary. This is saved as comment inside the configuration file.",
+ "maxLength" : 8192,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"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.",
"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,
"type" : "string",
- "typetext" : "[fuse=<1|0>] [,keyctl=<1|0>] [,mount=<fstype;fstype;...>] [,nesting=<1|0>]"
+ "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=<fstype;fstype;...>] [,nesting=<1|0>]"
},
"force" : {
"description" : "Allow to overwrite existing container.",
"description" : "Lock/unlock the VM.",
"enum" : [
"backup",
+ "create",
+ "destroyed",
"disk",
+ "fstrim",
"migrate",
"mounted",
"rollback",
"typetext" : "<integer> (16 - N)"
},
"mp[n]" : {
- "description" : "Use volume as container mount point.",
+ "description" : "Use volume as container mount point. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
"format" : {
"acl" : {
"description" : "Explicitly enable or disable ACL support.",
"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",
},
"optional" : 1,
"type" : "string",
- "typetext" : "[volume=]<volume> ,mp=<Path> [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
+ "typetext" : "[volume=]<volume> ,mp=<Path> [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
},
"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.",
- "format" : "address-list",
+ "format" : "lxc-ip-with-ll-iface-list",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/<ostype>.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.",
"enum" : [
"debian",
+ "devuan",
"ubuntu",
"centos",
"fedora",
"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,
},
"optional" : 1,
"type" : "string",
- "typetext" : "[volume=]<volume> [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
+ "typetext" : "[volume=]<volume> [,acl=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>]"
},
"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.",
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "tags" : {
+ "description" : "Tags of the Container. This is only meta information.",
+ "format" : "pve-tag-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"template" : {
"default" : 0,
"description" : "Enable/disable Template.",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "timezone" : {
+ "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab",
+ "format" : "pve-ct-timezone",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"tty" : {
"default" : 2,
"description" : "Specify the number of tty available to the container",
},
"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" : "<string>"
+ "typetext" : "[volume=]<volume>"
},
"vmid" : {
"description" : "The (unique) ID of the VM.",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "ceph osd in",
"method" : "POST",
"name" : "in",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "ceph osd out",
"method" : "POST",
"name" : "out",
}
}
},
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/osd/{osdid}/out",
- "text" : "out"
- }
- ],
+ "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" : "<boolean>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "osdid" : {
+ "description" : "OSD ID",
+ "type" : "integer",
+ "typetext" : "<integer>"
+ }
+ }
+ },
+ "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",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "cleanup" : {
+ "default" : 0,
+ "description" : "If set, we remove partition table entries.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "osdid" : {
+ "description" : "OSD ID",
+ "type" : "integer",
+ "typetext" : "<integer>"
+ }
+ }
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/nodes/{node}/ceph/osd/{osdid}",
+ "text" : "{osdid}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get Ceph osd list/tree.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit",
+ "Datastore.Audit"
+ ],
+ "any",
+ 1
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create OSD",
+ "method" : "POST",
+ "name" : "createosd",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "crush-device-class" : {
+ "description" : "Set the device class of the OSD in crush.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "db_dev" : {
+ "description" : "Block device name for block.db.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "db_dev_size" : {
+ "default" : "bluestore_block_db_size or 10% of OSD size",
+ "description" : "Size in GiB for block.db.",
+ "minimum" : 1,
+ "optional" : 1,
+ "requires" : "db_dev",
+ "type" : "number",
+ "typetext" : "<number> (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."
+ },
+ "dev" : {
+ "description" : "Block device name.",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "encrypted" : {
+ "default" : 0,
+ "description" : "Enables encryption of the OSD.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "wal_dev" : {
+ "description" : "Block device name for block.wal.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "wal_dev_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" : "<number> (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."
+ }
+ }
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/nodes/{node}/ceph/osd",
+ "text" : "osd"
+ },
+ {
+ "children" : [
+ {
+ "info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Destroy Ceph Metadata Server",
+ "method" : "DELETE",
+ "name" : "destroymds",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "name" : {
+ "description" : "The name (ID) of the mds",
+ "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" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ },
+ "POST" : {
+ "allowtoken" : 1,
+ "description" : "Create Ceph Metadata Server (MDS)",
+ "method" : "POST",
+ "name" : "createmds",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "hotstandby" : {
+ "default" : "0",
+ "description" : "Determines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "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"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/ceph/mds/{name}",
+ "text" : "{name}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "MDS directory index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "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 MDS"
+ },
+ "rank" : {
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "standby_replay" : {
+ "description" : "If true, the standby MDS is polling the active MDS for faster recovery (hot standby).",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "state" : {
+ "description" : "State of the MDS",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/nodes/{node}/ceph/mds",
+ "text" : "mds"
+ },
+ {
+ "children" : [
+ {
"info" : {
"DELETE" : {
- "description" : "Destroy OSD",
+ "allowtoken" : 1,
+ "description" : "Destroy Ceph Manager.",
"method" : "DELETE",
- "name" : "destroyosd",
+ "name" : "destroymgr",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "cleanup" : {
- "default" : 0,
- "description" : "If set, we remove partition table entries.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
+ "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" : "<string>"
+ }
+ }
+ },
+ "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"
},
- "osdid" : {
- "description" : "OSD ID",
- "type" : "integer",
- "typetext" : "<integer>"
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
}
}
},
- "leaf" : 0,
- "path" : "/nodes/{node}/ceph/osd/{osdid}",
- "text" : "{osdid}"
+ "leaf" : 1,
+ "path" : "/nodes/{node}/ceph/mgr/{id}",
+ "text" : "{id}"
}
],
"info" : {
"GET" : {
- "description" : "Get Ceph osd list/tree.",
+ "allowtoken" : 1,
+ "description" : "MGR directory index.",
"method" : "GET",
"name" : "index",
"parameters" : {
"protected" : 1,
"proxyto" : "node",
"returns" : {
- "type" : "object"
- }
- },
- "POST" : {
- "description" : "Create OSD",
- "method" : "POST",
- "name" : "createosd",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "bluestore" : {
- "default" : 1,
- "description" : "Use bluestore instead of filestore. This is the default.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
- "dev" : {
- "description" : "Block device name.",
- "type" : "string",
- "typetext" : "<string>"
- },
- "fstype" : {
- "default" : "xfs",
- "description" : "File system type (filestore only).",
- "enum" : [
- "xfs",
- "ext4"
- ],
- "optional" : 1,
- "type" : "string"
- },
- "journal_dev" : {
- "description" : "Block device name for journal (filestore) or block.db (bluestore).",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
+ "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"
+ }
},
- "wal_dev" : {
- "description" : "Block device name for block.wal (bluestore only).",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
}
- }
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
+ ],
+ "type" : "array"
}
}
},
"leaf" : 0,
- "path" : "/nodes/{node}/ceph/osd",
- "text" : "osd"
+ "path" : "/nodes/{node}/ceph/mgr",
+ "text" : "mgr"
},
{
"children" : [
{
"info" : {
"DELETE" : {
- "description" : "Destroy Ceph Metadata Server",
+ "allowtoken" : 1,
+ "description" : "Destroy Ceph Monitor and Manager.",
"method" : "DELETE",
- "name" : "destroymds",
+ "name" : "destroymon",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "name" : {
- "description" : "The name (ID) of the mds",
+ "monid" : {
+ "description" : "Monitor ID",
"pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
"type" : "string"
},
}
},
"POST" : {
- "description" : "Create Ceph Metadata Server (MDS)",
+ "allowtoken" : 1,
+ "description" : "Create Ceph Monitor and Manager",
"method" : "POST",
- "name" : "createmds",
+ "name" : "createmon",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "hotstandby" : {
- "default" : "0",
- "description" : "Determines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources.",
+ "mon-address" : {
+ "description" : "Overwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph.",
+ "format" : "ip-list",
"optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
+ "type" : "string",
+ "typetext" : "<string>"
},
- "name" : {
- "default" : "nodename",
- "description" : "The ID for the mds, when omitted the same as the nodename",
+ "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"
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/ceph/mds/{name}",
- "text" : "{name}"
+ "path" : "/nodes/{node}/ceph/mon/{monid}",
+ "text" : "{monid}"
}
],
"info" : {
"GET" : {
- "description" : "MDS directory index.",
+ "allowtoken" : 1,
+ "description" : "Get Ceph monitor list.",
"method" : "GET",
- "name" : "index",
+ "name" : "listmon",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
"type" : "string"
},
"name" : {
- "description" : "The name (ID) for the MDS"
- },
- "rank" : {
- "optional" : 1,
- "type" : "integer"
+ "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",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "add-storage" : {
+ "default" : 0,
+ "description" : "Configure the created CephFS as storage for this cluster.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "name" : {
+ "default" : "cephfs",
+ "description" : "The ceph filesystem name.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "pg_num" : {
+ "default" : 128,
+ "description" : "Number of placement groups for the backing data pool. The metadata pool will use a quarter of this.",
+ "maximum" : 32768,
+ "minimum" : 8,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (8 - 32768)"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/ceph/fs/{name}",
+ "text" : "{name}"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Directory index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit",
+ "Datastore.Audit"
+ ],
+ "any",
+ 1
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "data_pool" : {
+ "description" : "The name of the data pool.",
+ "type" : "string"
},
- "standby_replay" : {
- "description" : "If true, the standby MDS is polling the active MDS for faster recovery (hot standby).",
- "optional" : 1,
- "type" : "boolean"
+ "metadata_pool" : {
+ "description" : "The name of the metadata pool.",
+ "type" : "string"
},
- "state" : {
- "description" : "State of the MDS",
+ "name" : {
+ "description" : "The ceph filesystem name.",
"type" : "string"
}
},
}
},
"leaf" : 0,
- "path" : "/nodes/{node}/ceph/mds",
- "text" : "mds"
+ "path" : "/nodes/{node}/ceph/fs",
+ "text" : "fs"
},
{
"children" : [
{
"info" : {
"DELETE" : {
- "description" : "Destroy Ceph Manager.",
+ "allowtoken" : 1,
+ "description" : "Destroy pool",
"method" : "DELETE",
- "name" : "destroymgr",
+ "name" : "destroypool",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "force" : {
+ "default" : 0,
+ "description" : "If true, destroys pool even if in use",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "name" : {
+ "description" : "The name of the pool. It must be unique.",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "remove_storages" : {
+ "default" : 0,
+ "description" : "Remove all pveceph-managed storages configured for this pool",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "List pool settings.",
+ "method" : "GET",
+ "name" : "getpool",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "name" : {
+ "description" : "The name of the pool. It must be unique.",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "verbose" : {
+ "default" : 0,
+ "description" : "If enabled, will display additional data(eg. statistics).",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit",
+ "Datastore.Audit"
+ ],
+ "any",
+ 1
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "properties" : {
+ "application" : {
+ "default" : "rbd",
+ "description" : "The application of the pool.",
+ "enum" : [
+ "rbd",
+ "cephfs",
+ "rgw"
+ ],
+ "optional" : 1,
+ "title" : "Application",
+ "type" : "string"
+ },
+ "application_list" : {
+ "optional" : 1,
+ "title" : "Application",
+ "type" : "array"
+ },
+ "autoscale_status" : {
+ "optional" : 1,
+ "title" : "Autoscale Status",
+ "type" : "object"
+ },
+ "crush_rule" : {
+ "description" : "The rule to use for mapping object placement in the cluster.",
+ "optional" : 1,
+ "title" : "Crush Rule Name",
+ "type" : "string"
+ },
+ "fast_read" : {
+ "title" : "Fast Read",
+ "type" : "boolean"
+ },
+ "hashpspool" : {
+ "title" : "hashpspool",
+ "type" : "boolean"
+ },
"id" : {
- "description" : "The ID of the manager",
- "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+ "title" : "ID",
+ "type" : "integer"
+ },
+ "min_size" : {
+ "default" : 2,
+ "description" : "Minimum number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "Min Size",
+ "type" : "integer"
+ },
+ "name" : {
+ "description" : "The name of the pool. It must be unique.",
+ "title" : "Name",
+ "type" : "string"
+ },
+ "nodeep-scrub" : {
+ "title" : "nodeep-scrub",
+ "type" : "boolean"
+ },
+ "nodelete" : {
+ "title" : "nodelete",
+ "type" : "boolean"
+ },
+ "nopgchange" : {
+ "title" : "nopgchange",
+ "type" : "boolean"
+ },
+ "noscrub" : {
+ "title" : "noscrub",
+ "type" : "boolean"
+ },
+ "nosizechange" : {
+ "title" : "nosizechange",
+ "type" : "boolean"
+ },
+ "pg_autoscale_mode" : {
+ "default" : "warn",
+ "description" : "The automatic PG scaling mode of the pool.",
+ "enum" : [
+ "on",
+ "off",
+ "warn"
+ ],
+ "optional" : 1,
+ "title" : "PG Autoscale Mode",
+ "type" : "string"
+ },
+ "pg_num" : {
+ "default" : 128,
+ "description" : "Number of placement groups.",
+ "maximum" : 32768,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "PG Num",
+ "type" : "integer"
+ },
+ "pg_num_min" : {
+ "description" : "Minimal number of placement groups.",
+ "maximum" : 32768,
+ "optional" : 1,
+ "title" : "min. PG Num",
+ "type" : "integer"
+ },
+ "pgp_num" : {
+ "title" : "PGP num",
+ "type" : "integer"
+ },
+ "size" : {
+ "default" : 3,
+ "description" : "Number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "Size",
+ "type" : "integer"
+ },
+ "statistics" : {
+ "optional" : 1,
+ "title" : "Statistics",
+ "type" : "object"
+ },
+ "target_size" : {
+ "description" : "The estimated target size of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+ "title" : "PG Autoscale Target Size",
"type" : "string"
},
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
+ "target_size_ratio" : {
+ "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "title" : "PG Autoscale Target Ratio",
+ "type" : "number"
+ },
+ "use_gmt_hitset" : {
+ "title" : "use_gmt_hitset",
+ "type" : "boolean"
+ },
+ "write_fadvise_dontneed" : {
+ "title" : "write_fadvise_dontneed",
+ "type" : "boolean"
}
- }
- },
- "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" : "<string>"
+ },
+ "type" : "object"
}
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
- }
- }
- },
- "leaf" : 0,
- "path" : "/nodes/{node}/ceph/mgr",
- "text" : "mgr"
- },
- {
- "children" : [
- {
- "info" : {
- "DELETE" : {
- "description" : "Destroy Ceph Monitor and Manager.",
- "method" : "DELETE",
- "name" : "destroymon",
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Change POOL settings",
+ "method" : "PUT",
+ "name" : "setpool",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "exclude-manager" : {
- "default" : 0,
- "description" : "When set, removes only the monitor, not the manager",
+ "application" : {
+ "description" : "The application of the pool.",
+ "enum" : [
+ "rbd",
+ "cephfs",
+ "rgw"
+ ],
"optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
- "monid" : {
- "description" : "Monitor ID",
- "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+ "title" : "Application",
"type" : "string"
},
+ "crush_rule" : {
+ "description" : "The rule to use for mapping object placement in the cluster.",
+ "optional" : 1,
+ "title" : "Crush Rule Name",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "min_size" : {
+ "description" : "Minimum number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "Min Size",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 7)"
+ },
+ "name" : {
+ "description" : "The name of the pool. It must be unique.",
+ "title" : "Name",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
+ },
+ "pg_autoscale_mode" : {
+ "description" : "The automatic PG scaling mode of the pool.",
+ "enum" : [
+ "on",
+ "off",
+ "warn"
+ ],
+ "optional" : 1,
+ "title" : "PG Autoscale Mode",
+ "type" : "string"
+ },
+ "pg_num" : {
+ "description" : "Number of placement groups.",
+ "maximum" : 32768,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "PG Num",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 32768)"
+ },
+ "pg_num_min" : {
+ "description" : "Minimal number of placement groups.",
+ "maximum" : 32768,
+ "optional" : 1,
+ "title" : "min. PG Num",
+ "type" : "integer",
+ "typetext" : "<integer> (-N - 32768)"
+ },
+ "size" : {
+ "description" : "Number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "Size",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 7)"
+ },
+ "target_size" : {
+ "description" : "The estimated target size of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+ "title" : "PG Autoscale Target Size",
+ "type" : "string"
+ },
+ "target_size_ratio" : {
+ "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "title" : "PG Autoscale Target Ratio",
+ "type" : "number",
+ "typetext" : "<number>"
}
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/ceph/mon/{monid}",
- "text" : "{monid}"
+ "path" : "/nodes/{node}/ceph/pools/{name}",
+ "text" : "{name}"
}
],
"info" : {
"GET" : {
- "description" : "Get Ceph monitor list.",
+ "allowtoken" : 1,
+ "description" : "List all pools.",
"method" : "GET",
- "name" : "listmon",
+ "name" : "lspools",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
"returns" : {
"items" : {
"properties" : {
- "addr" : {
+ "autoscale_status" : {
+ "optional" : 1,
+ "title" : "Autoscale Status",
+ "type" : "object"
+ },
+ "bytes_used" : {
+ "title" : "Used",
+ "type" : "integer"
+ },
+ "crush_rule" : {
+ "title" : "Crush Rule",
+ "type" : "integer"
+ },
+ "crush_rule_name" : {
+ "title" : "Crush Rule Name",
"type" : "string"
},
- "name" : {
+ "min_size" : {
+ "title" : "Min Size",
+ "type" : "integer"
+ },
+ "percent_used" : {
+ "title" : "%-Used",
+ "type" : "number"
+ },
+ "pg_autoscale_mode" : {
+ "optional" : 1,
+ "title" : "PG Autoscale Mode",
+ "type" : "string"
+ },
+ "pg_num" : {
+ "title" : "PG Num",
+ "type" : "integer"
+ },
+ "pg_num_final" : {
+ "optional" : 1,
+ "title" : "Optimal PG Num",
+ "type" : "integer"
+ },
+ "pg_num_min" : {
+ "optional" : 1,
+ "title" : "min. PG Num",
+ "type" : "integer"
+ },
+ "pool" : {
+ "title" : "ID",
+ "type" : "integer"
+ },
+ "pool_name" : {
+ "title" : "Name",
"type" : "string"
+ },
+ "size" : {
+ "title" : "Size",
+ "type" : "integer"
+ },
+ "target_size" : {
+ "optional" : 1,
+ "title" : "PG Autoscale Target Size",
+ "type" : "integer"
+ },
+ "target_size_ratio" : {
+ "optional" : 1,
+ "title" : "PG Autoscale Target Ratio",
+ "type" : "number"
}
},
"type" : "object"
},
"links" : [
{
- "href" : "{name}",
+ "href" : "{pool_name}",
"rel" : "child"
}
],
}
},
"POST" : {
- "description" : "Create Ceph Monitor and Manager",
+ "allowtoken" : 1,
+ "description" : "Create POOL",
"method" : "POST",
- "name" : "createmon",
+ "name" : "createpool",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "exclude-manager" : {
- "default" : 0,
- "description" : "When set, only a monitor will be created.",
+ "add_storages" : {
+ "description" : "Configure VM and CT storage using the new pool.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
},
- "id" : {
- "description" : "The ID for the monitor, when omitted the same as the nodename",
+ "application" : {
+ "default" : "rbd",
+ "description" : "The application of the pool.",
+ "enum" : [
+ "rbd",
+ "cephfs",
+ "rgw"
+ ],
"optional" : 1,
- "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+ "title" : "Application",
"type" : "string"
},
- "mon-address" : {
- "description" : "Overwrites autodetected monitor IP address. Must be in the public network of ceph.",
- "format" : "ip",
+ "crush_rule" : {
+ "description" : "The rule to use for mapping object placement in the cluster.",
+ "optional" : 1,
+ "title" : "Crush Rule Name",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "min_size" : {
+ "default" : 2,
+ "description" : "Minimum number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
"optional" : 1,
+ "title" : "Min Size",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 7)"
+ },
+ "name" : {
+ "description" : "The name of the pool. It must be unique.",
+ "title" : "Name",
"type" : "string",
"typetext" : "<string>"
},
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
+ },
+ "pg_autoscale_mode" : {
+ "default" : "warn",
+ "description" : "The automatic PG scaling mode of the pool.",
+ "enum" : [
+ "on",
+ "off",
+ "warn"
+ ],
+ "optional" : 1,
+ "title" : "PG Autoscale Mode",
+ "type" : "string"
+ },
+ "pg_num" : {
+ "default" : 128,
+ "description" : "Number of placement groups.",
+ "maximum" : 32768,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "PG Num",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 32768)"
+ },
+ "pg_num_min" : {
+ "description" : "Minimal number of placement groups.",
+ "maximum" : 32768,
+ "optional" : 1,
+ "title" : "min. PG Num",
+ "type" : "integer",
+ "typetext" : "<integer> (-N - 32768)"
+ },
+ "size" : {
+ "default" : 3,
+ "description" : "Number of replicas per object",
+ "maximum" : 7,
+ "minimum" : 1,
+ "optional" : 1,
+ "title" : "Size",
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 7)"
+ },
+ "target_size" : {
+ "description" : "The estimated target size of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+ "title" : "PG Autoscale Target Size",
+ "type" : "string"
+ },
+ "target_size_ratio" : {
+ "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+ "optional" : 1,
+ "title" : "PG Autoscale Target Ratio",
+ "type" : "number",
+ "typetext" : "<number>"
}
}
},
}
},
"leaf" : 0,
- "path" : "/nodes/{node}/ceph/mon",
- "text" : "mon"
+ "path" : "/nodes/{node}/ceph/pools",
+ "text" : "pools"
},
{
- "children" : [
- {
- "info" : {
- "POST" : {
- "description" : "Create a Ceph filesystem",
- "method" : "POST",
- "name" : "createfs",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "add-storage" : {
- "default" : 0,
- "description" : "Configure the created CephFS as storage for this cluster.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
- "name" : {
- "default" : "cephfs",
- "description" : "The ceph filesystem name.",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- },
- "pg_num" : {
- "default" : 128,
- "description" : "Number of placement groups for the backing data pool. The metadata pool will use a quarter of this.",
- "maximum" : 32768,
- "minimum" : 8,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (8 - 32768)"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/fs/{name}",
- "text" : "{name}"
- }
- ],
"info" : {
"GET" : {
- "description" : "Directory index.",
+ "allowtoken" : 1,
+ "description" : "Get Ceph configuration.",
"method" : "GET",
- "name" : "index",
+ "name" : "config",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
1
]
},
- "protected" : 1,
"proxyto" : "node",
"returns" : {
- "items" : {
- "properties" : {
- "data_pool" : {
- "description" : "The name of the data pool.",
- "type" : "string"
- },
- "metadata_pool" : {
- "description" : "The name of the metadata pool.",
- "type" : "string"
- },
- "name" : {
- "description" : "The ceph filesystem name.",
- "type" : "string"
- }
- },
- "type" : "object"
- },
- "links" : [
- {
- "href" : "{name}",
- "rel" : "child"
- }
- ],
- "type" : "array"
+ "type" : "string"
}
}
},
- "leaf" : 0,
- "path" : "/nodes/{node}/ceph/fs",
- "text" : "fs"
+ "leaf" : 1,
+ "path" : "/nodes/{node}/ceph/config",
+ "text" : "config"
},
{
"info" : {
"GET" : {
- "description" : "List local disks.",
+ "allowtoken" : 1,
+ "description" : "Get Ceph configuration database.",
"method" : "GET",
- "name" : "disks",
+ "name" : "configdb",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
- },
- "type" : {
- "description" : "Only list specific types of disks.",
- "enum" : [
- "unused",
- "journal_disks"
- ],
- "optional" : 1,
- "type" : "string"
}
}
},
"returns" : {
"items" : {
"properties" : {
- "dev" : {
- "type" : "string"
- },
- "gpt" : {
+ "can_update_at_runtime" : {
"type" : "boolean"
},
- "model" : {
- "optional" : 1,
+ "level" : {
"type" : "string"
},
- "osdid" : {
- "type" : "integer"
- },
- "serial" : {
- "optional" : 1,
+ "mask" : {
"type" : "string"
},
- "size" : {
- "type" : "integer"
+ "name" : {
+ "type" : "string"
},
- "used" : {
- "optional" : 1,
+ "section" : {
"type" : "string"
},
- "vendor" : {
- "optional" : 1,
+ "value" : {
"type" : "string"
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/ceph/disks",
- "text" : "disks"
- },
- {
- "info" : {
- "GET" : {
- "description" : "Get Ceph configuration.",
- "method" : "GET",
- "name" : "config",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Audit",
- "Datastore.Audit"
- ],
- "any",
- 1
- ]
- },
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/config",
- "text" : "config"
+ "path" : "/nodes/{node}/ceph/configdb",
+ "text" : "configdb"
},
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create initial ceph default configuration and setup symlinks.",
"method" : "POST",
"name" : "init",
},
"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" : "<boolean>"
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Stop ceph services.",
"method" : "POST",
"name" : "stop",
"default" : "ceph.target",
"description" : "Ceph service name.",
"optional" : 1,
- "pattern" : "(ceph|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"
}
}
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Start ceph services.",
"method" : "POST",
"name" : "start",
"default" : "ceph.target",
"description" : "Ceph service name.",
"optional" : 1,
- "pattern" : "(ceph|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"
}
}
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Restart ceph services.",
"method" : "POST",
"name" : "restart",
"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"
}
}
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get ceph status.",
"method" : "GET",
"name" : "status",
"protected" : 1,
"proxyto" : "node",
"returns" : {
- "type" : "object"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/status",
- "text" : "status"
- },
- {
- "children" : [
- {
- "info" : {
- "DELETE" : {
- "description" : "Destroy pool",
- "method" : "DELETE",
- "name" : "destroypool",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "force" : {
- "default" : 0,
- "description" : "If true, destroys pool even if in use",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
- "name" : {
- "description" : "The name of the pool. It must be unique.",
- "type" : "string",
- "typetext" : "<string>"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- },
- "remove_storages" : {
- "default" : 0,
- "description" : "Remove all pveceph-managed storages configured for this pool",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/pools/{name}",
- "text" : "{name}"
- }
- ],
- "info" : {
- "GET" : {
- "description" : "List all pools.",
- "method" : "GET",
- "name" : "lspools",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Audit",
- "Datastore.Audit"
- ],
- "any",
- 1
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "items" : {
- "properties" : {
- "pool" : {
- "type" : "integer"
- },
- "pool_name" : {
- "type" : "string"
- },
- "size" : {
- "type" : "integer"
- }
- },
- "type" : "object"
- },
- "links" : [
- {
- "href" : "{pool_name}",
- "rel" : "child"
- }
- ],
- "type" : "array"
- }
- },
- "POST" : {
- "description" : "Create POOL",
- "method" : "POST",
- "name" : "createpool",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "add_storages" : {
- "description" : "Configure VM and CT storage using the new pool.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
- "application" : {
- "description" : "The application of the pool, 'rbd' by default.",
- "enum" : [
- "rbd",
- "cephfs",
- "rgw"
- ],
- "optional" : 1,
- "type" : "string"
- },
- "crush_rule" : {
- "description" : "The rule to use for mapping object placement in the cluster.",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- },
- "min_size" : {
- "default" : 2,
- "description" : "Minimum number of replicas per object",
- "maximum" : 7,
- "minimum" : 1,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (1 - 7)"
- },
- "name" : {
- "description" : "The name of the pool. It must be unique.",
- "type" : "string",
- "typetext" : "<string>"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- },
- "pg_num" : {
- "default" : 128,
- "description" : "Number of placement groups.",
- "maximum" : 32768,
- "minimum" : 8,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (8 - 32768)"
- },
- "size" : {
- "default" : 3,
- "description" : "Number of replicas per object",
- "maximum" : 7,
- "minimum" : 1,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (1 - 7)"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
- }
- }
- },
- "leaf" : 0,
- "path" : "/nodes/{node}/ceph/pools",
- "text" : "pools"
- },
- {
- "children" : [
- {
- "info" : {
- "DELETE" : {
- "description" : "Unset a ceph flag",
- "method" : "DELETE",
- "name" : "unset_flag",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "flag" : {
- "description" : "The ceph flag to set/unset",
- "enum" : [
- "full",
- "pause",
- "noup",
- "nodown",
- "noout",
- "noin",
- "nobackfill",
- "norebalance",
- "norecover",
- "noscrub",
- "nodeep-scrub",
- "notieragent"
- ],
- "type" : "string"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "null"
- }
- },
- "POST" : {
- "description" : "Set a ceph flag",
- "method" : "POST",
- "name" : "set_flag",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "flag" : {
- "description" : "The ceph flag to set/unset",
- "enum" : [
- "full",
- "pause",
- "noup",
- "nodown",
- "noout",
- "noin",
- "nobackfill",
- "norebalance",
- "norecover",
- "noscrub",
- "nodeep-scrub",
- "notieragent"
- ],
- "type" : "string"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "null"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/ceph/flags/{flag}",
- "text" : "{flag}"
- }
- ],
- "info" : {
- "GET" : {
- "description" : "get all set ceph flags",
- "method" : "GET",
- "name" : "get_flags",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Audit"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "string"
+ "type" : "object"
}
}
},
- "leaf" : 0,
- "path" : "/nodes/{node}/ceph/flags",
- "text" : "flags"
+ "leaf" : 1,
+ "path" : "/nodes/{node}/ceph/status",
+ "text" : "status"
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get OSD crush map",
"method" : "GET",
"name" : "crush",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read ceph log",
"method" : "GET",
"name" : "log",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List ceph rules.",
"method" : "GET",
"name" : "rules",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
+ "description" : "Get the currently configured vzdump defaults.",
+ "method" : "GET",
+ "name" : "defaults",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "The user needs 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions for the specified storage (or default storage if none specified). Some properties are only returned when the user has 'Sys.Audit' permissions for the node.",
+ "user" : "all"
+ },
+ "proxyto" : "node",
+ "returns" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "all" : {
+ "default" : 0,
+ "description" : "Backup all known guest systems on this host.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "bwlimit" : {
+ "default" : 0,
+ "description" : "Limit I/O bandwidth (KBytes per second).",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "compress" : {
+ "default" : "0",
+ "description" : "Compress dump file.",
+ "enum" : [
+ "0",
+ "1",
+ "gzip",
+ "lzo",
+ "zstd"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "dumpdir" : {
+ "description" : "Store resulting files to specified directory.",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "exclude" : {
+ "description" : "Exclude specified guest systems (assumes --all)",
+ "format" : "pve-vmid-list",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "exclude-path" : {
+ "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
+ "format" : "string-alist",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "ionice" : {
+ "default" : 7,
+ "description" : "Set CFQ ionice priority.",
+ "maximum" : 8,
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "lockwait" : {
+ "default" : 180,
+ "description" : "Maximal time to wait for the global lock (minutes).",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "mailnotification" : {
+ "default" : "always",
+ "description" : "Specify when to send an email",
+ "enum" : [
+ "always",
+ "failure"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "mailto" : {
+ "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+ "format" : "email-or-username-list",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "maxfiles" : {
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "mode" : {
+ "default" : "snapshot",
+ "description" : "Backup mode.",
+ "enum" : [
+ "snapshot",
+ "suspend",
+ "stop"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "node" : {
+ "description" : "Only run if executed on this node.",
+ "format" : "pve-node",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "pigz" : {
+ "default" : 0,
+ "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "pool" : {
+ "description" : "Backup all known guest systems included in the specified pool.",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "prune-backups" : {
+ "default" : "keep-all=1",
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "quiet" : {
+ "default" : 0,
+ "description" : "Be quiet.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "remove" : {
+ "default" : 1,
+ "description" : "Prune older backups according to 'prune-backups'.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "script" : {
+ "description" : "Use specified hook script.",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "stdexcludes" : {
+ "default" : 1,
+ "description" : "Exclude temporary files and logs.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "stop" : {
+ "default" : 0,
+ "description" : "Stop running backup jobs on this host.",
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "stopwait" : {
+ "default" : 10,
+ "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "storage" : {
+ "description" : "Store resulting file to this storage.",
+ "format" : "pve-storage-id",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "tmpdir" : {
+ "description" : "Store temporary files to specified directory.",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vmid" : {
+ "description" : "The ID of the guest system you want to backup.",
+ "format" : "pve-vmid-list",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "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"
+ }
+ },
+ "type" : "object"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/vzdump/defaults",
+ "text" : "defaults"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
"description" : "Extract configuration from vzdump backup archive.",
"method" : "GET",
"name" : "extractconfig",
],
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Create backup.",
"method" : "POST",
"name" : "vzdump",
"0",
"1",
"gzip",
- "lzo"
+ "lzo",
+ "zstd"
],
"optional" : 1,
"type" : "string"
"typetext" : "<string>"
},
"exclude-path" : {
- "description" : "Exclude certain files/directories (shell globs).",
+ "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
"format" : "string-alist",
"optional" : 1,
"type" : "string",
"type" : "string"
},
"mailto" : {
- "description" : "Comma-separated list of email addresses that should receive email notifications.",
- "format" : "string-list",
+ "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+ "format" : "email-or-username-list",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
"maxfiles" : {
- "default" : 1,
- "description" : "Maximal number of backup files per guest system.",
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
"minimum" : 1,
"optional" : 1,
"type" : "integer",
"type" : "integer",
"typetext" : "<integer>"
},
+ "pool" : {
+ "description" : "Backup all known guest systems included in the specified pool.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "prune-backups" : {
+ "default" : "keep-all=1",
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+ },
"quiet" : {
"default" : 0,
"description" : "Be quiet.",
},
"remove" : {
"default" : 1,
- "description" : "Remove old backup files if there are more than 'maxfiles' backup files.",
+ "description" : "Prune older backups according to 'prune-backups'.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"type" : "string",
"typetext" : "<string>"
},
- "size" : {
- "default" : 1024,
- "description" : "Unused, will be removed in a future release.",
- "minimum" : 500,
- "optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (500 - N)"
- },
"stdexcludes" : {
"default" : 1,
"description" : "Exclude temporary files and logs.",
},
"stop" : {
"default" : 0,
- "description" : "Stop runnig backup jobs on this host.",
+ "description" : "Stop running backup jobs on this host.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
+ },
+ "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" : "<integer>"
}
}
},
"permissions" : {
- "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'tmpdir', 'dumpdir', 'script', 'bwlimit' and 'ionice' parameters are restricted to the 'root@pam' user.",
+ "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit' and 'ionice' parameters are restricted to the 'root@pam' user.",
"user" : "all"
},
"protected" : 1,
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read service properties",
"method" : "GET",
"name" : "service_state",
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Start service.",
"method" : "POST",
"name" : "service_start",
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Stop service.",
"method" : "POST",
"name" : "service_stop",
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
{
"info" : {
"POST" : {
- "description" : "Restart service.",
+ "allowtoken" : 1,
+ "description" : "Hard restart service. Use reload if you want to reduce interruptions.",
"method" : "POST",
"name" : "service_restart",
"parameters" : {
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
{
"info" : {
"POST" : {
- "description" : "Reload service.",
+ "allowtoken" : 1,
+ "description" : "Reload service. Falls back to restart if service cannot be reloaded.",
"method" : "POST",
"name" : "service_reload",
"parameters" : {
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index",
"method" : "GET",
"name" : "srvcmdidx",
"pve-ha-lrm",
"sshd",
"syslog",
+ "systemd-journald",
"cron",
"postfix",
"ksmtuned",
- "systemd-timesyncd"
+ "systemd-timesyncd",
+ "chrony"
],
"type" : "string"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Service list.",
"method" : "GET",
"name" : "index",
},
{
"info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Delete subscription key of this node.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "null"
+ }
+ },
"GET" : {
+ "allowtoken" : 1,
"description" : "Read subscription info.",
"method" : "GET",
"name" : "get",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Update subscription info.",
"method" : "POST",
"name" : "update",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set subscription key.",
"method" : "PUT",
"name" : "set",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete network device configuration",
"method" : "DELETE",
"name" : "delete_network",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read network device configuration",
"method" : "GET",
"name" : "network_config",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update network device configuration",
"method" : "PUT",
"name" : "update_network",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "bond-primary" : {
+ "description" : "Specify the primary interface for active-backup bond.",
+ "format" : "pve-iface",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"bond_mode" : {
"description" : "Bonding mode.",
"enum" : [
"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",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "cidr" : {
+ "description" : "IPv4 CIDR.",
+ "format" : "CIDRv4",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "cidr6" : {
+ "description" : "IPv6 CIDR.",
+ "format" : "CIDRv6",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"comments" : {
"description" : "Comments",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
+ "mtu" : {
+ "description" : "MTU.",
+ "maximum" : 65520,
+ "minimum" : 1280,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1280 - 65520)"
+ },
"netmask" : {
"description" : "Network mask.",
"format" : "ipv4mask",
"typetext" : "<string>"
},
"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",
"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" : "<integer> (1 - 4094)"
+ },
+ "vlan-raw-device" : {
+ "description" : "Specify the raw interface for the vlan interface.",
+ "format" : "pve-iface",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
}
}
},
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Revert network configuration changes.",
"method" : "DELETE",
"name" : "revert_network_changes",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "List available networks",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create network device configuration",
"method" : "POST",
"name" : "create_network",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "bond-primary" : {
+ "description" : "Specify the primary interface for active-backup bond.",
+ "format" : "pve-iface",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"bond_mode" : {
"description" : "Bonding mode.",
"enum" : [
"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",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "cidr" : {
+ "description" : "IPv4 CIDR.",
+ "format" : "CIDRv4",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "cidr6" : {
+ "description" : "IPv6 CIDR.",
+ "format" : "CIDRv6",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"comments" : {
"description" : "Comments",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
+ "mtu" : {
+ "description" : "MTU.",
+ "maximum" : 65520,
+ "minimum" : 1280,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1280 - 65520)"
+ },
"netmask" : {
"description" : "Network mask.",
"format" : "ipv4mask",
"typetext" : "<string>"
},
"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",
"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" : "<integer> (1 - 4094)"
+ },
+ "vlan-raw-device" : {
+ "description" : "Specify the raw interface for the vlan interface.",
+ "format" : "pve-iface",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
}
}
},
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Reload network configuration",
"method" : "PUT",
"name" : "reload_network_config",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read task log.",
"method" : "GET",
"name" : "read_task_log",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read task status.",
"method" : "GET",
"name" : "read_task_status",
],
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Stop a task.",
"method" : "DELETE",
"name" : "stop_task",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "",
"method" : "GET",
"name" : "upid_index",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read task list for one node (finished tasks).",
"method" : "GET",
"name" : "node_tasks",
{
"info" : {
"GET" : {
- "description" : "Scan zfs pool list on local node.",
+ "allowtoken" : 1,
+ "description" : "Scan remote NFS server.",
"method" : "GET",
- "name" : "zfsscan",
+ "name" : "nfsscan",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
+ },
+ "server" : {
+ "description" : "The server address (name or IP).",
+ "format" : "pve-storage-server",
+ "type" : "string",
+ "typetext" : "<string>"
}
}
},
"returns" : {
"items" : {
"properties" : {
- "pool" : {
- "description" : "ZFS pool name.",
+ "options" : {
+ "description" : "NFS export options.",
+ "type" : "string"
+ },
+ "path" : {
+ "description" : "The exported path.",
"type" : "string"
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/scan/zfs",
- "text" : "zfs"
+ "path" : "/nodes/{node}/scan/nfs",
+ "text" : "nfs"
},
{
"info" : {
"GET" : {
- "description" : "Scan remote NFS server.",
+ "allowtoken" : 1,
+ "description" : "Scan remote CIFS server.",
"method" : "GET",
- "name" : "nfsscan",
+ "name" : "cifsscan",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "domain" : {
+ "description" : "SMB domain (Workgroup).",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
},
+ "password" : {
+ "description" : "User password.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"server" : {
"description" : "The server address (name or IP).",
"format" : "pve-storage-server",
"type" : "string",
"typetext" : "<string>"
+ },
+ "username" : {
+ "description" : "User name.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
}
}
},
"returns" : {
"items" : {
"properties" : {
- "options" : {
- "description" : "NFS export options.",
+ "description" : {
+ "description" : "Descriptive text from server.",
"type" : "string"
},
- "path" : {
- "description" : "The exported path.",
+ "share" : {
+ "description" : "The cifs share name.",
"type" : "string"
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/scan/nfs",
- "text" : "nfs"
+ "path" : "/nodes/{node}/scan/cifs",
+ "text" : "cifs"
},
{
"info" : {
"GET" : {
- "description" : "Scan remote CIFS server.",
+ "allowtoken" : 1,
+ "description" : "Scan remote Proxmox Backup Server.",
"method" : "GET",
- "name" : "cifsscan",
+ "name" : "pbsscan",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
- "domain" : {
- "description" : "SMB domain (Workgroup).",
+ "fingerprint" : {
+ "description" : "Certificate SHA 256 fingerprint.",
"optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
+ "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+ "type" : "string"
},
"node" : {
"description" : "The cluster node name.",
"typetext" : "<string>"
},
"password" : {
- "description" : "User password.",
- "optional" : 1,
+ "description" : "User password or API token secret.",
"type" : "string",
"typetext" : "<string>"
},
+ "port" : {
+ "default" : 8007,
+ "description" : "Optional port.",
+ "maximum" : 65535,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 65535)"
+ },
"server" : {
"description" : "The server address (name or IP).",
"format" : "pve-storage-server",
"typetext" : "<string>"
},
"username" : {
- "description" : "User name.",
- "optional" : 1,
+ "description" : "User-name or API token-ID.",
"type" : "string",
"typetext" : "<string>"
}
"returns" : {
"items" : {
"properties" : {
- "description" : {
- "description" : "Descriptive text from server.",
+ "comment" : {
+ "description" : "Comment from server.",
+ "optional" : 1,
"type" : "string"
},
- "share" : {
- "description" : "The cifs share name.",
+ "store" : {
+ "description" : "The datastore name.",
"type" : "string"
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/scan/cifs",
- "text" : "cifs"
+ "path" : "/nodes/{node}/scan/pbs",
+ "text" : "pbs"
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Scan remote GlusterFS server.",
"method" : "GET",
"name" : "glusterfsscan",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Scan remote iSCSI server.",
"method" : "GET",
"name" : "iscsiscan",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List local LVM volume groups.",
"method" : "GET",
"name" : "lvmscan",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List local LVM Thin Pools.",
"method" : "GET",
"name" : "lvmthinscan",
{
"info" : {
"GET" : {
- "description" : "List local USB devices.",
+ "allowtoken" : 1,
+ "description" : "Scan zfs pool list on local node.",
"method" : "GET",
- "name" : "usbscan",
+ "name" : "zfsscan",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
"permissions" : {
"check" : [
"perm",
- "/",
+ "/storage",
[
- "Sys.Modify"
+ "Datastore.Allocate"
]
]
},
"returns" : {
"items" : {
"properties" : {
- "busnum" : {
- "type" : "integer"
- },
- "class" : {
- "type" : "integer"
- },
- "devnum" : {
- "type" : "integer"
- },
- "level" : {
- "type" : "integer"
- },
- "manufacturer" : {
- "optional" : 1,
- "type" : "string"
- },
- "port" : {
- "type" : "integer"
- },
- "prodid" : {
- "type" : "string"
- },
- "product" : {
- "optional" : 1,
- "type" : "string"
- },
- "serial" : {
- "optional" : 1,
- "type" : "string"
- },
- "speed" : {
- "type" : "string"
- },
- "usbpath" : {
- "optional" : 1,
- "type" : "string"
- },
- "vendid" : {
+ "pool" : {
+ "description" : "ZFS pool name.",
"type" : "string"
}
},
}
},
"leaf" : 1,
- "path" : "/nodes/{node}/scan/usb",
- "text" : "usb"
+ "path" : "/nodes/{node}/scan/zfs",
+ "text" : "zfs"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Index of available scan methods",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List mediated device types for given PCI device.",
"method" : "GET",
"name" : "mdevscan",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Index of available pci methods",
"method" : "GET",
"name" : "pciindex",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List local PCI devices.",
"method" : "GET",
"name" : "pciscan",
"leaf" : 0,
"path" : "/nodes/{node}/hardware/pci",
"text" : "pci"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "List local USB devices.",
+ "method" : "GET",
+ "name" : "usbscan",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "busnum" : {
+ "type" : "integer"
+ },
+ "class" : {
+ "type" : "integer"
+ },
+ "devnum" : {
+ "type" : "integer"
+ },
+ "level" : {
+ "type" : "integer"
+ },
+ "manufacturer" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "port" : {
+ "type" : "integer"
+ },
+ "prodid" : {
+ "type" : "string"
+ },
+ "product" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "serial" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "speed" : {
+ "type" : "string"
+ },
+ "usbpath" : {
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vendid" : {
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/hardware/usb",
+ "text" : "usb"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Index of hardware types",
"method" : "GET",
"name" : "index",
"children" : [
{
"children" : [
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "List all custom and default CPU models.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only returns custom models when the current user has Sys.Audit on /nodes.",
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "custom" : {
+ "description" : "True if this is a custom CPU model.",
+ "type" : "boolean"
+ },
+ "name" : {
+ "description" : "Name of the CPU model. Identifies it for subsequent API calls. Prefixed with 'custom-' for custom models.",
+ "type" : "string"
+ },
+ "vendor" : {
+ "description" : "CPU vendor visible to the guest when this model is selected. Vendor of 'reported-model' in case of custom models.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/capabilities/qemu/cpu",
+ "text" : "cpu"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get available QEMU/KVM machine types.",
+ "method" : "GET",
+ "name" : "types",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "additionalProperties" : 1,
+ "properties" : {
+ "id" : {
+ "description" : "Full name of machine type and version.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "The machine type.",
+ "enum" : [
+ "q35",
+ "i440fx"
+ ],
+ "type" : "string"
+ },
+ "version" : {
+ "description" : "The machine version.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/capabilities/qemu/machines",
+ "text" : "machines"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "QEMU capabilities index.",
+ "method" : "GET",
+ "name" : "qemu_caps_index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {},
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/nodes/{node}/capabilities/qemu",
+ "text" : "qemu"
+ }
+ ],
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Node capabilities index.",
+ "method" : "GET",
+ "name" : "index",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "user" : "all"
+ },
+ "returns" : {
+ "items" : {
+ "properties" : {},
+ "type" : "object"
+ },
+ "links" : [
+ {
+ "href" : "{name}",
+ "rel" : "child"
+ }
+ ],
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 0,
+ "path" : "/nodes/{node}/capabilities",
+ "text" : "capabilities"
+ },
+ {
+ "children" : [
+ {
+ "children" : [
+ {
+ "info" : {
+ "DELETE" : {
+ "allowtoken" : 1,
+ "description" : "Prune backups. Only those using the standard naming scheme are considered.",
+ "method" : "DELETE",
+ "name" : "delete",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "prune-backups" : {
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.",
+ "enum" : [
+ "qemu",
+ "lxc"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vmid" : {
+ "description" : "Only prune backups for this VM.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - N)"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "You need the 'Datastore.Allocate' privilege on the storage (or if a VM ID is specified, 'Datastore.AllocateSpace' and 'VM.Backup' for the VM).",
+ "user" : "all"
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ },
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get prune information for backups. NOTE: this is only a preview and might not be what a subsequent prune call does if backups are removed/added in the meantime.",
+ "method" : "GET",
+ "name" : "dryrun",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "prune-backups" : {
+ "description" : "Use these retention options instead of those from the storage configuration.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "type" : {
+ "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.",
+ "enum" : [
+ "qemu",
+ "lxc"
+ ],
+ "optional" : 1,
+ "type" : "string"
+ },
+ "vmid" : {
+ "description" : "Only consider backups for this guest.",
+ "format" : "pve-vmid",
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - N)"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/storage/{storage}",
+ [
+ "Datastore.Audit",
+ "Datastore.AllocateSpace"
+ ],
+ "any",
+ 1
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "ctime" : {
+ "description" : "Creation time of the backup (seconds since the UNIX epoch).",
+ "type" : "integer"
+ },
+ "mark" : {
+ "description" : "Whether the backup would be kept or removed. For backups that don't use the standard naming scheme, it's 'protected'.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "One of 'qemu', 'lxc', 'openvz' or 'unknown'.",
+ "type" : "string"
+ },
+ "vmid" : {
+ "description" : "The VM the backup belongs to.",
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "volid" : {
+ "description" : "Backup volume ID.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/storage/{storage}/prunebackups",
+ "text" : "prunebackups"
+ },
{
"children" : [
{
"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" : "<integer> (1 - 30)"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"protected" : 1,
"proxyto" : "node",
"returns" : {
- "type" : "null"
+ "optional" : 1,
+ "type" : "string"
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get volume attributes",
"method" : "GET",
"name" : "info",
"protected" : 1,
"proxyto" : "node",
"returns" : {
+ "properties" : {
+ "format" : {
+ "description" : "Format identifier ('raw', 'qcow2', 'subvol', 'iso', 'tgz' ...)",
+ "type" : "string"
+ },
+ "notes" : {
+ "description" : "Optional notes.",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "path" : {
+ "description" : "The Path",
+ "type" : "string"
+ },
+ "size" : {
+ "description" : "Volume size in bytes.",
+ "renderer" : "bytes",
+ "type" : "integer"
+ },
+ "used" : {
+ "description" : "Used space. Please note that most storage plugins do not report anything useful here.",
+ "renderer" : "bytes",
+ "type" : "integer"
+ }
+ },
"type" : "object"
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Copy a volume. This is experimental code - do not use.",
"method" : "POST",
"name" : "copy",
"returns" : {
"type" : "string"
}
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Update volume attributes",
+ "method" : "PUT",
+ "name" : "updateattributes",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "notes" : {
+ "description" : "The new notes.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "volume" : {
+ "description" : "Volume identifier",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "You need read access for the volume.",
+ "user" : "all"
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "null"
+ }
}
},
"leaf" : 1,
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List storage content.",
"method" : "GET",
"name" : "index",
"returns" : {
"items" : {
"properties" : {
+ "ctime" : {
+ "description" : "Creation time (seconds since the UNIX Epoch).",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "encrypted" : {
+ "description" : "If whole backup is encrypted, value is the fingerprint or '1' if encrypted. Only useful for the Proxmox Backup Server storage type.",
+ "optional" : 1,
+ "type" : "string"
+ },
"format" : {
"description" : "Format identifier ('raw', 'qcow2', 'subvol', 'iso', 'tgz' ...)",
"type" : "string"
},
+ "notes" : {
+ "description" : "Optional notes. If they contain multiple lines, only the first one is returned here.",
+ "optional" : 1,
+ "type" : "string"
+ },
"parent" : {
"description" : "Volume identifier of parent (for linked cloned).",
"optional" : 1,
"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"
},
+ "verification" : {
+ "description" : "Last backup verification result, only useful for PBS storages.",
+ "optional" : 1,
+ "properties" : {
+ "state" : {
+ "description" : "Last backup verification state.",
+ "type" : "string"
+ },
+ "upid" : {
+ "description" : "Last backup verification UPID.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
"vmid" : {
"description" : "Associated Owner VMID.",
"optional" : 1,
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Allocate disk images.",
"method" : "POST",
"name" : "create",
"path" : "/nodes/{node}/storage/{storage}/content",
"text" : "content"
},
+ {
+ "children" : [
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "List files and directories for single file restore under the given path.",
+ "method" : "GET",
+ "name" : "list",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "filepath" : {
+ "description" : "base64-path to the directory or file being listed, or \"/\".",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "volume" : {
+ "description" : "Backup volume ID or name. Currently only PBS snapshots are supported.",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "You need read access for the volume.",
+ "user" : "all"
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "filepath" : {
+ "description" : "base64 path of the current entry",
+ "type" : "string"
+ },
+ "leaf" : {
+ "description" : "If this entry is a leaf in the directory graph.",
+ "type" : "boolean"
+ },
+ "mtime" : {
+ "description" : "Entry last-modified time (unix timestamp).",
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "size" : {
+ "description" : "Entry file size.",
+ "optional" : 1,
+ "type" : "integer"
+ },
+ "text" : {
+ "description" : "Entry display text.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "Entry type.",
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "type" : "array"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/storage/{storage}/file-restore/list",
+ "text" : "list"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Extract a file or directory (as zip archive) from a PBS backup.",
+ "method" : "GET",
+ "name" : "download",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "filepath" : {
+ "description" : "base64-path to the directory or file to download.",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "storage" : {
+ "description" : "The storage identifier.",
+ "format" : "pve-storage-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "volume" : {
+ "description" : "Backup volume ID or name. Currently only PBS snapshots are supported.",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "You need read access for the volume.",
+ "user" : "all"
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "any"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/storage/{storage}/file-restore/download",
+ "text" : "download"
+ }
+ ],
+ "leaf" : 0,
+ "path" : "/nodes/{node}/storage/{storage}/file-restore",
+ "text" : "file-restore"
+ },
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read storage status.",
"method" : "GET",
"name" : "read_status",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read storage RRD statistics (returns PNG).",
"method" : "GET",
"name" : "rrd",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read storage RRD statistics.",
"method" : "GET",
"name" : "rrddata",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Upload templates and ISO images.",
"method" : "POST",
"name" : "upload",
"typetext" : "<string>"
},
"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" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "",
"method" : "GET",
"name" : "diridx",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get status for all datastores.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List LVM Volume Groups",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create an LVM Volume Group",
"method" : "POST",
"name" : "create",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List LVM thinpools",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create an LVM thinpool",
"method" : "POST",
"name" : "create",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "PVE Managed Directory storages.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a Filesystem on an unused disk. Will be mounted under '/mnt/pve/NAME'.",
"method" : "POST",
"name" : "create",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get details about a zpool.",
"method" : "GET",
"name" : "detail",
},
"scan" : {
"description" : "Information about the last/current scrub.",
+ "optional" : 1,
"type" : "string"
},
"state" : {
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List Zpools.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a ZFS pool.",
"method" : "POST",
"name" : "create",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List local disks.",
"method" : "GET",
"name" : "list",
"parameters" : {
"additionalProperties" : 0,
"properties" : {
+ "include-partitions" : {
+ "default" : 0,
+ "description" : "Also include partitions.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
},
"permissions" : {
"check" : [
- "perm",
- "/",
+ "or",
[
- "Sys.Audit",
- "Datastore.Audit"
+ "perm",
+ "/",
+ [
+ "Sys.Audit",
+ "Datastore.Audit"
+ ],
+ "any",
+ 1
],
- "any",
- 1
+ [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Audit",
+ "Datastore.Audit"
+ ],
+ "any",
+ 1
+ ]
]
},
"protected" : 1,
"osdid" : {
"type" : "integer"
},
+ "parent" : {
+ "description" : "For partitions only. The device path of the disk the partition resides on.",
+ "optional" : 1,
+ "type" : "string"
+ },
"serial" : {
"optional" : 1,
"type" : "string"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get SMART Health of a disk.",
"method" : "GET",
"name" : "smart",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Initialize Disk with GPT",
"method" : "POST",
"name" : "initgpt",
"leaf" : 1,
"path" : "/nodes/{node}/disks/initgpt",
"text" : "initgpt"
+ },
+ {
+ "info" : {
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Wipe a disk or partition.",
+ "method" : "PUT",
+ "name" : "wipe_disk",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "disk" : {
+ "description" : "Block device name",
+ "pattern" : "^/dev/[a-zA-Z0-9\\/]+$",
+ "type" : "string"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "string"
+ }
+ }
+ },
+ "leaf" : 1,
+ "path" : "/nodes/{node}/disks/wipedisk",
+ "text" : "wipedisk"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Node index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List available updates.",
"method" : "GET",
"name" : "list_updates",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "This is used to resynchronize the package index files from their sources (apt-get update).",
"method" : "POST",
"name" : "update_database",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get package changelogs.",
"method" : "GET",
"name" : "changelog",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get package information for important Proxmox packages.",
"method" : "GET",
"name" : "versions",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index for apt (Advanced Package Tool).",
"method" : "GET",
"name" : "index",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete rule.",
"method" : "DELETE",
"name" : "delete_rule",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get single rule data.",
"method" : "GET",
"name" : "get_rule",
"optional" : 1,
"type" : "integer"
},
+ "icmp-type" : {
+ "optional" : 1,
+ "type" : "string"
+ },
"iface" : {
"optional" : 1,
"type" : "string"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Modify rule data.",
"method" : "PUT",
"name" : "update_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List rules.",
"method" : "GET",
"name" : "get_rules",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new rule.",
"method" : "POST",
"name" : "create_rule",
"dest" : {
"description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
"type" : "integer",
"typetext" : "<integer> (0 - N)"
},
+ "icmp-type" : {
+ "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+ "format" : "pve-fw-icmp-type-spec",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"iface" : {
"description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
"format" : "pve-iface",
"source" : {
"description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
"format" : "pve-fw-addr-spec",
+ "maxLength" : 512,
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get host firewall options.",
"method" : "GET",
"name" : "get_options",
"type" : "boolean"
},
"ndp" : {
- "description" : "Enable NDP.",
+ "default" : 0,
+ "description" : "Enable NDP (Neighbor Discovery Protocol).",
"optional" : 1,
"type" : "boolean"
},
"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" : [
"type" : "string"
},
"tcpflags" : {
+ "default" : 0,
"description" : "Filter illegal combinations of TCP flags.",
"optional" : 1,
"type" : "boolean"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set Firewall options.",
"method" : "PUT",
"name" : "set_options",
"typetext" : "<boolean>"
},
"ndp" : {
- "description" : "Enable NDP.",
+ "default" : 0,
+ "description" : "Enable NDP (Neighbor Discovery Protocol).",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"typetext" : "<boolean>"
},
"nf_conntrack_max" : {
+ "default" : 262144,
"description" : "Maximum number of tracked connections.",
"minimum" : 32768,
"optional" : 1,
"typetext" : "<integer> (32768 - N)"
},
"nf_conntrack_tcp_timeout_established" : {
+ "default" : 432000,
"description" : "Conntrack established timeout.",
"minimum" : 7875,
"optional" : 1,
"type" : "integer",
"typetext" : "<integer> (7875 - N)"
},
+ "nf_conntrack_tcp_timeout_syn_recv" : {
+ "default" : 60,
+ "description" : "Conntrack syn recv timeout.",
+ "maximum" : 60,
+ "minimum" : 30,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (30 - 60)"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "boolean",
"typetext" : "<boolean>"
},
+ "protection_synflood" : {
+ "default" : 0,
+ "description" : "Enable synflood protection",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "protection_synflood_burst" : {
+ "default" : 1000,
+ "description" : "Synflood protection rate burst by ip src.",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
+ "protection_synflood_rate" : {
+ "default" : 200,
+ "description" : "Synflood protection rate syn/sec by ip src.",
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer>"
+ },
"smurf_log_level" : {
"description" : "Log level for SMURFS filter.",
"enum" : [
"type" : "string"
},
"tcpflags" : {
+ "default" : 0,
"description" : "Filter illegal combinations of TCP flags.",
"optional" : 1,
"type" : "boolean",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read firewall log",
"method" : "GET",
"name" : "log",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get replication job status.",
"method" : "GET",
"name" : "job_status",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read replication job log.",
"method" : "GET",
"name" : "read_job_log",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Schedule replication job to start as soon as possible.",
"method" : "POST",
"name" : "schedule_now",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Directory index.",
"method" : "GET",
"name" : "index",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "List status of all replication jobs on this node.",
"method" : "GET",
"name" : "status",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Revoke existing certificate from CA.",
"method" : "DELETE",
"name" : "revoke_certificate",
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Order a new certificate from ACME-compatible CA.",
"method" : "POST",
"name" : "new_certificate",
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Renew existing certificate from CA.",
"method" : "PUT",
"name" : "renew_certificate",
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "ACME index.",
"method" : "GET",
"name" : "index",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get information about node's certificates.",
"method" : "GET",
"name" : "info",
"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" : {
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "DELETE custom certificate chain and key.",
"method" : "DELETE",
"name" : "remove_custom_cert",
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Upload or update custom certificate chain and key.",
"method" : "POST",
"name" : "upload_custom_cert",
}
}
},
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/nodes/{node}",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
"protected" : 1,
"proxyto" : "node",
"returns" : {
"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" : {
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Node index.",
"method" : "GET",
"name" : "index",
}
},
"leaf" : 0,
- "path" : "/nodes/{node}/certificates",
- "text" : "certificates"
- },
- {
- "info" : {
- "GET" : {
- "description" : "Get node configuration options.",
- "method" : "GET",
- "name" : "get_config",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Audit"
- ]
- ]
- },
- "proxyto" : "node",
- "returns" : {
- "type" : "object"
- }
- },
- "PUT" : {
- "description" : "Set node configuration options.",
- "method" : "PUT",
- "name" : "set_options",
- "parameters" : {
- "additionalProperties" : 0,
- "properties" : {
- "acme" : {
- "description" : "Node specific ACME settings.",
- "format" : {
- "account" : {
- "default" : "default",
- "description" : "ACME account config file name.",
- "format" : "pve-configid",
- "format_description" : "name",
- "optional" : 1,
- "type" : "string"
- },
- "domains" : {
- "description" : "List of domains for this node's ACME certificate",
- "format" : "pve-acme-domain-list",
- "format_description" : "domain[;domain;...]",
- "type" : "string"
- }
- },
- "optional" : 1,
- "type" : "string",
- "typetext" : "domains=<domain[;domain;...]> [,account=<name>]"
- },
- "delete" : {
- "description" : "A list of settings you want to delete.",
- "format" : "pve-configid-list",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- },
- "description" : {
- "description" : "Node description/comment.",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- },
- "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" : "<string>"
- },
- "node" : {
- "description" : "The cluster node name.",
- "format" : "pve-node",
- "type" : "string",
- "typetext" : "<string>"
- },
- "wakeonlan" : {
- "description" : "MAC address for wake on LAN",
- "format" : "mac-addr",
- "optional" : 1,
- "type" : "string",
- "typetext" : "<string>"
- }
- }
- },
- "permissions" : {
- "check" : [
- "perm",
- "/",
- [
- "Sys.Modify"
- ]
- ]
- },
- "protected" : 1,
- "proxyto" : "node",
- "returns" : {
- "type" : "null"
- }
- }
- },
- "leaf" : 1,
- "path" : "/nodes/{node}/config",
- "text" : "config"
+ "path" : "/nodes/{node}/certificates",
+ "text" : "certificates"
+ },
+ {
+ "info" : {
+ "GET" : {
+ "allowtoken" : 1,
+ "description" : "Get node configuration options.",
+ "method" : "GET",
+ "name" : "get_config",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Audit"
+ ]
+ ]
+ },
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "object"
+ }
+ },
+ "PUT" : {
+ "allowtoken" : 1,
+ "description" : "Set node configuration options.",
+ "method" : "PUT",
+ "name" : "set_options",
+ "parameters" : {
+ "additionalProperties" : 0,
+ "properties" : {
+ "acme" : {
+ "description" : "Node specific ACME settings.",
+ "format" : {
+ "account" : {
+ "default" : "default",
+ "description" : "ACME account config file name.",
+ "format" : "pve-configid",
+ "format_description" : "name",
+ "optional" : 1,
+ "type" : "string"
+ },
+ "domains" : {
+ "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" : "[account=<name>] [,domains=<domain[;domain;...]>]"
+ },
+ "acmedomain[n]" : {
+ "description" : "ACME domain and validation plugin",
+ "format" : {
+ "alias" : {
+ "description" : "Alias for the Domain to verify ACME Challenge over DNS",
+ "format" : "pve-acme-alias",
+ "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=]<domain> [,alias=<domain>] [,plugin=<name of the plugin configuration>]"
+ },
+ "delete" : {
+ "description" : "A list of settings you want to delete.",
+ "format" : "pve-configid-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "description" : {
+ "description" : "Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file.",
+ "maxLength" : 65536,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<integer> (0 - 300)"
+ },
+ "wakeonlan" : {
+ "description" : "MAC address for wake on LAN",
+ "format" : "mac-addr",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "check" : [
+ "perm",
+ "/",
+ [
+ "Sys.Modify"
+ ]
+ ]
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "type" : "null"
+ }
+ }
+ },
+ "leaf" : 1,
+ "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" : "<string>"
+ },
+ "zone" : {
+ "description" : "The SDN zone object identifier.",
+ "format" : "pve-sdn-zone-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ },
+ "zone" : {
+ "description" : "The SDN zone object identifier.",
+ "format" : "pve-sdn-zone-id",
+ "type" : "string",
+ "typetext" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "permissions" : {
+ "description" : "Only list entries where you have 'SDN.Audit'",
+ "user" : "all"
+ },
+ "protected" : 1,
+ "proxyto" : "node",
+ "returns" : {
+ "items" : {
+ "properties" : {
+ "status" : {
+ "description" : "Status of zone",
+ "enum" : [
+ "available",
+ "pending",
+ "error"
+ ],
+ "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" : "<string>"
+ }
+ }
+ },
+ "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",
"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"
}
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read node status",
"method" : "GET",
"name" : "status",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Reboot or shutdown a node.",
"method" : "POST",
"name" : "node_cmd",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read tap/vm network device interface counters",
"method" : "GET",
"name" : "netstat",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Execute multiple commands in order.",
"method" : "POST",
"name" : "execute",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Try to wake a node via 'wake on LAN' network packet.",
"method" : "POST",
"name" : "wakeonlan",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read node RRD statistics (returns PNG)",
"method" : "GET",
"name" : "rrd",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read node RRD statistics",
"method" : "GET",
"name" : "rrddata",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read system log",
"method" : "GET",
"name" : "syslog",
"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" : "<string>"
+ },
+ "lastentries" : {
+ "description" : "Limit to the last X lines. Conflicts with a range.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "node" : {
+ "description" : "The cluster node name.",
+ "format" : "pve-node",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "since" : {
+ "description" : "Display all log since this UNIX epoch. Conflicts with 'startcursor'.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (0 - N)"
+ },
+ "startcursor" : {
+ "description" : "Start after the given Cursor. Conflicts with 'since'",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "until" : {
+ "description" : "Display all log until this UNIX epoch. Conflicts with 'endcursor'.",
+ "minimum" : 0,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (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",
"default" : "login",
"description" : "Run specific command or default to login.",
"enum" : [
+ "login",
"upgrade",
- "ceph_install",
- "login"
+ "ceph_install"
],
"optional" : 1,
"type" : "string"
},
+ "cmd-opts" : {
+ "default" : "",
+ "description" : "Add parameters to a command. Encoded as null terminated strings.",
+ "optional" : 1,
+ "requires" : "cmd",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"height" : {
"description" : "sets the height of the console in pixels.",
"maximum" : 2160,
"type" : "string",
"typetext" : "<string>"
},
- "upgrade" : {
- "default" : 0,
- "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
- },
"websocket" : {
"description" : "use websocket instead of standard vnc.",
"optional" : 1,
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a VNC Shell proxy.",
"method" : "POST",
"name" : "termproxy",
"default" : "login",
"description" : "Run specific command or default to login.",
"enum" : [
+ "login",
"upgrade",
- "ceph_install",
- "login"
+ "ceph_install"
],
"optional" : 1,
"type" : "string"
},
+ "cmd-opts" : {
+ "default" : "",
+ "description" : "Add parameters to a command. Encoded as null terminated strings.",
+ "optional" : 1,
+ "requires" : "cmd",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"type" : "string",
"typetext" : "<string>"
- },
- "upgrade" : {
- "default" : 0,
- "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
}
}
},
{
"info" : {
"GET" : {
- "description" : "Opens a weksocket for VNC traffic.",
+ "allowtoken" : 1,
+ "description" : "Opens a websocket for VNC traffic.",
"method" : "GET",
"name" : "vncwebsocket",
"parameters" : {
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Creates a SPICE shell.",
"method" : "POST",
"name" : "spiceshell",
"default" : "login",
"description" : "Run specific command or default to login.",
"enum" : [
+ "login",
"upgrade",
- "ceph_install",
- "login"
+ "ceph_install"
],
"optional" : 1,
"type" : "string"
},
+ "cmd-opts" : {
+ "default" : "",
+ "description" : "Add parameters to a command. Encoded as null terminated strings.",
+ "optional" : 1,
+ "requires" : "cmd",
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"node" : {
"description" : "The cluster node name.",
"format" : "pve-node",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
- },
- "upgrade" : {
- "default" : 0,
- "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.",
- "optional" : 1,
- "type" : "boolean",
- "typetext" : "<boolean>"
}
}
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read DNS settings.",
"method" : "GET",
"name" : "dns",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Write DNS settings.",
"method" : "PUT",
"name" : "update_dns",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Read server time and time zone settings.",
"method" : "GET",
"name" : "time",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Set time zone.",
"method" : "PUT",
"name" : "set_timezone",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get list of appliances.",
"method" : "GET",
"name" : "aplinfo",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Download appliance templates.",
"method" : "POST",
"name" : "apl_download",
"typetext" : "<string>"
},
"template" : {
- "description" : "The template wich will downloaded",
+ "description" : "The template which will downloaded",
"maxLength" : 255,
"type" : "string",
"typetext" : "<string>"
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Gather various systems information about a node",
"method" : "GET",
"name" : "report",
{
"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" : "<boolean>"
"typetext" : "<string>"
},
"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",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Stop all VMs and Containers.",
"method" : "POST",
"name" : "stopall",
{
"info" : {
"POST" : {
+ "allowtoken" : 1,
"description" : "Migrate all VMs and Containers.",
"method" : "POST",
"name" : "migrateall",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
+ },
+ "with-local-disks" : {
+ "description" : "Enable live storage migration for local disk",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
}
}
},
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get the content of /etc/hosts.",
"method" : "GET",
"name" : "get_etc_hosts",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Write /etc/hosts.",
"method" : "POST",
"name" : "write_etc_hosts",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Node index.",
"method" : "GET",
"name" : "index",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Cluster node index.",
"method" : "GET",
"name" : "index",
"description" : "Used memory in bytes.",
"optional" : 1,
"renderer" : "bytes",
- "type" : "string"
+ "type" : "integer"
},
"node" : {
"description" : "The cluster node name.",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete storage configuration.",
"method" : "DELETE",
"name" : "delete",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Read storage configuration.",
"method" : "GET",
"name" : "read",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update storage configuration.",
"method" : "PUT",
"name" : "update",
"type" : "string",
"typetext" : "<string>"
},
+ "encryption-key" : {
+ "description" : "Encryption key. Use 'autogen' to generate one automatically without passphrase.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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",
"type" : "string",
"typetext" : "<string>"
},
+ "master-pubkey" : {
+ "description" : "Base64-encoded, PEM-formatted public RSA key. Used to encrypt a copy of the encryption-key which will be added to each encrypted backup.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"maxfiles" : {
- "description" : "Maximal number of backup files per VM. Use '0' for unlimted.",
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
"minimum" : 0,
"optional" : 1,
"type" : "integer",
"type" : "string",
"typetext" : "<string>"
},
+ "mountpoint" : {
+ "description" : "mount point",
+ "format" : "pve-storage-path",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "namespace" : {
+ "description" : "RBD Namespace.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "nocow" : {
+ "default" : 0,
+ "description" : "Set the NOCOW flag on files. Disables data checksumming and causes data errors to be unrecoverable from while allowing direct I/O. Only use this if data does not need to be any more safe than on a single ext4 formatted disk with no underlying raid system.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"nodes" : {
"description" : "List of cluster node names.",
"format" : "pve-node-list",
"typetext" : "<string>"
},
"password" : {
- "description" : "Password for CIFS share.",
+ "description" : "Password for accessing the share/datastore.",
"maxLength" : 256,
"optional" : 1,
"type" : "string",
"type" : "string",
"typetext" : "<string>"
},
- "redundancy" : {
- "default" : 2,
- "description" : "The redundancy count specifies the number of nodes to which the resource should be deployed. It must be at least 1 and at most the number of nodes in the cluster.",
- "maximum" : 16,
+ "port" : {
+ "default" : 8007,
+ "description" : "For non default port.",
+ "maximum" : 65535,
"minimum" : 1,
"optional" : 1,
"type" : "integer",
- "typetext" : "<integer> (1 - 16)"
+ "typetext" : "<integer> (1 - 65535)"
+ },
+ "prune-backups" : {
+ "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.",
+ "format" : "prune-backups",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
},
"saferemove" : {
"description" : "Zero-out data when removing LVs.",
},
"protected" : 1,
"returns" : {
- "type" : "null"
+ "properties" : {
+ "config" : {
+ "additionalProperties" : 1,
+ "description" : "Partial, possible server generated, configuration properties.",
+ "optional" : 1,
+ "properties" : {
+ "encryption-key" : {
+ "description" : "The, possible auto-generated, encryption-key.",
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "storage" : {
+ "description" : "The ID of the created storage.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "The type of the created storage.",
+ "enum" : [
+ "btrfs",
+ "cephfs",
+ "cifs",
+ "dir",
+ "glusterfs",
+ "iscsi",
+ "iscsidirect",
+ "lvm",
+ "lvmthin",
+ "nfs",
+ "pbs",
+ "rbd",
+ "zfs",
+ "zfspool"
+ ],
+ "type" : "string"
+ }
+ },
+ "type" : "object"
}
}
},
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Storage index.",
"method" : "GET",
"name" : "index",
"type" : {
"description" : "Only list storage of specific type",
"enum" : [
+ "btrfs",
"cephfs",
"cifs",
"dir",
- "drbd",
- "fake",
"glusterfs",
"iscsi",
"iscsidirect",
"lvm",
"lvmthin",
"nfs",
+ "pbs",
"rbd",
- "sheepdog",
"zfs",
"zfspool"
],
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create a new storage.",
"method" : "POST",
"name" : "create",
"type" : "string",
"typetext" : "<string>"
},
+ "datastore" : {
+ "description" : "Proxmox Backup Server datastore name.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"disable" : {
"description" : "Flag to disable the storage.",
"optional" : 1,
"type" : "string",
"typetext" : "<string>"
},
+ "encryption-key" : {
+ "description" : "Encryption key. Use 'autogen' to generate one automatically without passphrase.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"export" : {
"description" : "NFS export path.",
"format" : "pve-storage-path",
"type" : "string",
"typetext" : "<string>"
},
+ "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",
"type" : "string",
"typetext" : "<string>"
},
+ "master-pubkey" : {
+ "description" : "Base64-encoded, PEM-formatted public RSA key. Used to encrypt a copy of the encryption-key which will be added to each encrypted backup.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"maxfiles" : {
- "description" : "Maximal number of backup files per VM. Use '0' for unlimted.",
+ "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
"minimum" : 0,
"optional" : 1,
"type" : "integer",
"type" : "string",
"typetext" : "<string>"
},
+ "mountpoint" : {
+ "description" : "mount point",
+ "format" : "pve-storage-path",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "namespace" : {
+ "description" : "RBD Namespace.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "nocow" : {
+ "default" : 0,
+ "description" : "Set the NOCOW flag on files. Disables data checksumming and causes data errors to be unrecoverable from while allowing direct I/O. Only use this if data does not need to be any more safe than on a single ext4 formatted disk with no underlying raid system.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"nodes" : {
"description" : "List of cluster node names.",
"format" : "pve-node-list",
"typetext" : "<string>"
},
"password" : {
- "description" : "Password for CIFS share.",
+ "description" : "Password for accessing the share/datastore.",
"maxLength" : 256,
"optional" : 1,
"type" : "string",
"type" : "string",
"typetext" : "<string>"
},
+ "port" : {
+ "default" : 8007,
+ "description" : "For non default port.",
+ "maximum" : 65535,
+ "minimum" : 1,
+ "optional" : 1,
+ "type" : "integer",
+ "typetext" : "<integer> (1 - 65535)"
+ },
"portal" : {
"description" : "iSCSI portal (IP or DNS name with optional port).",
"format" : "pve-storage-portal-dns",
"type" : "string",
"typetext" : "<string>"
},
- "redundancy" : {
- "default" : 2,
- "description" : "The redundancy count specifies the number of nodes to which the resource should be deployed. It must be at least 1 and at most the number of nodes in the cluster.",
- "maximum" : 16,
- "minimum" : 1,
+ "prune-backups" : {
+ "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.",
+ "format" : "prune-backups",
"optional" : 1,
- "type" : "integer",
- "typetext" : "<integer> (1 - 16)"
+ "type" : "string",
+ "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
},
"saferemove" : {
"description" : "Zero-out data when removing LVs.",
"type" : {
"description" : "Storage type.",
"enum" : [
+ "btrfs",
"cephfs",
"cifs",
"dir",
- "drbd",
- "fake",
"glusterfs",
"iscsi",
"iscsidirect",
"lvm",
"lvmthin",
"nfs",
+ "pbs",
"rbd",
- "sheepdog",
"zfs",
"zfspool"
],
},
"protected" : 1,
"returns" : {
- "type" : "null"
+ "properties" : {
+ "config" : {
+ "additionalProperties" : 1,
+ "description" : "Partial, possible server generated, configuration properties.",
+ "optional" : 1,
+ "properties" : {
+ "encryption-key" : {
+ "description" : "The, possible auto-generated, encryption-key.",
+ "optional" : 1,
+ "type" : "string"
+ }
+ },
+ "type" : "object"
+ },
+ "storage" : {
+ "description" : "The ID of the created storage.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "The type of the created storage.",
+ "enum" : [
+ "btrfs",
+ "cephfs",
+ "cifs",
+ "dir",
+ "glusterfs",
+ "iscsi",
+ "iscsidirect",
+ "lvm",
+ "lvmthin",
+ "nfs",
+ "pbs",
+ "rbd",
+ "zfs",
+ "zfspool"
+ ],
+ "type" : "string"
+ }
+ },
+ "type" : "object"
}
}
},
{
"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" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : "<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",
+ "typetext" : "<integer> (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" : "<boolean>"
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : "<userid>!<tokenid>",
+ "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" : "<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",
+ "typetext" : "<integer> (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" : "<boolean>"
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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" : "<string>"
+ }
+ }
+ },
+ "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",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get user configuration.",
"method" : "GET",
"name" : "read_user",
"type" : "string"
},
"groups" : {
+ "items" : {
+ "format" : "pve-groupid",
+ "type" : "string"
+ },
+ "optional" : 1,
"type" : "array"
},
"keys" : {
"lastname" : {
"optional" : 1,
"type" : "string"
+ },
+ "tokens" : {
+ "optional" : 1,
+ "type" : "object"
}
},
"type" : "object"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update user configuration.",
"method" : "PUT",
"name" : "update_user",
}
}
},
- "leaf" : 1,
+ "leaf" : 0,
"path" : "/access/users/{userid}",
"text" : "{userid}"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "User index.",
"method" : "GET",
"name" : "index",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
+ },
+ "full" : {
+ "default" : 0,
+ "description" : "Include group and token information.",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
}
}
},
"optional" : 1,
"type" : "string"
},
+ "groups" : {
+ "format" : "pve-groupid-list",
+ "optional" : 1,
+ "type" : "string"
+ },
"keys" : {
"description" : "Keys for two factor auth (yubico).",
"optional" : 1,
"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",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new user.",
"method" : "POST",
"name" : "create_user",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete group.",
"method" : "DELETE",
"name" : "delete_group",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get group configuration.",
"method" : "GET",
"name" : "read_group",
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update group data.",
"method" : "PUT",
"name" : "update_group",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Group index.",
"method" : "GET",
"name" : "index",
"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"
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new group.",
"method" : "POST",
"name" : "create_group",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete role.",
"method" : "DELETE",
"name" : "delete_role",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get role configuration.",
"method" : "GET",
"name" : "read_role",
"optional" : 1,
"type" : "boolean"
},
+ "Pool.Audit" : {
+ "optional" : 1,
+ "type" : "boolean"
+ },
"Realm.Allocate" : {
"optional" : 1,
"type" : "boolean"
"optional" : 1,
"type" : "boolean"
},
+ "SDN.Allocate" : {
+ "optional" : 1,
+ "type" : "boolean"
+ },
+ "SDN.Audit" : {
+ "optional" : 1,
+ "type" : "boolean"
+ },
"Sys.Audit" : {
"optional" : 1,
"type" : "boolean"
"optional" : 1,
"type" : "boolean"
},
+ "VM.Config.Cloudinit" : {
+ "optional" : 1,
+ "type" : "boolean"
+ },
"VM.Config.Disk" : {
"optional" : 1,
"type" : "boolean"
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update an existing role.",
"method" : "PUT",
"name" : "update_role",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Role index.",
"method" : "GET",
"name" : "index",
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new role.",
"method" : "POST",
"name" : "create_role",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Get Access Control List (ACLs).",
"method" : "GET",
"name" : "read_acl",
"type" : {
"enum" : [
"user",
- "group"
+ "group",
+ "token"
],
"type" : "string"
},
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update Access Control List (add or remove permissions).",
"method" : "PUT",
"name" : "update_acl",
"type" : "string",
"typetext" : "<string>"
},
+ "tokens" : {
+ "description" : "List of API tokens.",
+ "format" : "pve-tokenid-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"users" : {
"description" : "List of users.",
"format" : "pve-userid-list",
{
"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" : "<boolean>"
+ },
+ "enable-new" : {
+ "default" : "1",
+ "description" : "Enable newly synced users immediately.",
+ "optional" : "1",
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "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" : "<boolean>"
+ },
+ "purge" : {
+ "description" : "Remove ACLs for users or groups which were removed from the config during a sync.",
+ "optional" : "1",
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
+ "realm" : {
+ "description" : "Authentication domain ID",
+ "format" : "pve-realm",
+ "maxLength" : 32,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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/<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",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get auth server configuration.",
"method" : "GET",
"name" : "read",
"returns" : {}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update authentication server settings.",
"method" : "PUT",
"name" : "update",
"type" : "string",
"typetext" : "<string>"
},
+ "case-sensitive" : {
+ "default" : 1,
+ "description" : "username is case-sensitive",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"cert" : {
"description" : "Path to the client certificate",
"optional" : 1,
"pattern" : "\\S+",
"type" : "string"
},
+ "filter" : {
+ "description" : "LDAP filter for user sync.",
+ "maxLength" : 2048,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "group_classes" : {
+ "default" : "groupOfNames, group, univentionGroup, ipausergroup",
+ "description" : "The objectclasses for groups.",
+ "format" : "ldap-simple-attr-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "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/<REALM>.pw'.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"port" : {
"description" : "Server port.",
"maximum" : 65535,
"typetext" : "<string>"
},
"secure" : {
- "description" : "Use secure LDAPS protocol.",
+ "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"type" : "string",
"typetext" : "<string>"
},
+ "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=<users|groups|both>]"
+ },
+ "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",
"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" : "<string>"
+ },
"verify" : {
"default" : 0,
"description" : "Verify the server's SSL certificate",
}
}
},
- "leaf" : 1,
+ "leaf" : 0,
"path" : "/access/domains/{realm}",
"text" : "{realm}"
}
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Authentication domain index.",
"method" : "GET",
"name" : "index",
],
"optional" : 1,
"type" : "string"
+ },
+ "type" : {
+ "type" : "string"
}
},
"type" : "object"
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Add an authentication server.",
"method" : "POST",
"name" : "create",
"type" : "string",
"typetext" : "<string>"
},
+ "case-sensitive" : {
+ "default" : 1,
+ "description" : "username is case-sensitive",
+ "optional" : 1,
+ "type" : "boolean",
+ "typetext" : "<boolean>"
+ },
"cert" : {
"description" : "Path to the client certificate",
"optional" : 1,
"pattern" : "\\S+",
"type" : "string"
},
+ "filter" : {
+ "description" : "LDAP filter for user sync.",
+ "maxLength" : 2048,
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "group_classes" : {
+ "default" : "groupOfNames, group, univentionGroup, ipausergroup",
+ "description" : "The objectclasses for groups.",
+ "format" : "ldap-simple-attr-list",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "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" : "<string>"
+ },
+ "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/<REALM>.pw'.",
+ "optional" : 1,
+ "type" : "string",
+ "typetext" : "<string>"
+ },
"port" : {
"description" : "Server port.",
"maximum" : 65535,
"typetext" : "<string>"
},
"secure" : {
- "description" : "Use secure LDAPS protocol.",
+ "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
"optional" : 1,
"type" : "boolean",
"typetext" : "<boolean>"
"type" : "string",
"typetext" : "<string>"
},
+ "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=<users|groups|both>]"
+ },
+ "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",
"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" : "<string>"
+ },
"verify" : {
"default" : 0,
"description" : "Verify the server's SSL certificate",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Dummy. Useful for formatters which want to provide a login page.",
"method" : "GET",
"name" : "get_ticket",
}
},
"POST" : {
+ "allowtoken" : 0,
"description" : "Create or verify authentication ticket.",
"method" : "POST",
"name" : "create_ticket",
{
"info" : {
"PUT" : {
+ "allowtoken" : 0,
"description" : "Change user password.",
"method" : "PUT",
"name" : "change_password",
{
"info" : {
"POST" : {
+ "allowtoken" : 0,
"description" : "Finish a u2f challenge.",
"method" : "POST",
"name" : "verify_tfa",
}
},
"PUT" : {
+ "allowtoken" : 0,
"description" : "Change user u2f authentication.",
"method" : "PUT",
"name" : "change_tfa",
},
"key" : {
"description" : "When adding TOTP, the shared secret value.",
+ "format" : "pve-tfa-secret",
"optional" : 1,
- "pattern" : "(?^:[A-Z2-7=]{16}|[A-Fa-f0-9]{40})",
- "type" : "string"
+ "type" : "string",
+ "typetext" : "<string>"
},
"password" : {
"description" : "The current password.",
"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" : "<string>"
+ },
+ "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",
{
"info" : {
"DELETE" : {
+ "allowtoken" : 1,
"description" : "Delete pool.",
"method" : "DELETE",
"name" : "delete_pool",
}
},
"GET" : {
+ "allowtoken" : 1,
"description" : "Get pool configuration.",
"method" : "GET",
"name" : "read_pool",
"perm",
"/pool/{poolid}",
[
- "Pool.Allocate"
+ "Pool.Audit"
]
]
},
}
},
"PUT" : {
+ "allowtoken" : 1,
"description" : "Update pool data.",
"method" : "PUT",
"name" : "update_pool",
],
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "Pool index.",
"method" : "GET",
"name" : "index",
"additionalProperties" : 0
},
"permissions" : {
- "description" : "List all pools where you have Pool.Allocate or VM.Allocate permissions on /pool/<pool>.",
+ "description" : "List all pools where you have Pool.Audit permissions on /pool/<pool>.",
"user" : "all"
},
"returns" : {
}
},
"POST" : {
+ "allowtoken" : 1,
"description" : "Create new pool.",
"method" : "POST",
"name" : "create_pool",
{
"info" : {
"GET" : {
+ "allowtoken" : 1,
"description" : "API version details. The result also includes the global datacenter confguration.",
"method" : "GET",
"name" : "version",