[PATCH docs 1/1] fix #4456: move apidata into seperate json file

Dean Galvin dean.galvin3 at gmail.com
Sun Jan 8 20:34:55 CET 2023


Signed-off-by: Dean Galvin <deangalvin3 at gmail.com>
---
 Makefile                |    19 +-
 api-viewer/apidata.js   | 49787 --------------------------------------
 api-viewer/apidata.json | 49786 +++++++++++++++++++++++++++++++++++++
 extractapi.pl           |     2 +-
 4 files changed, 49799 insertions(+), 49795 deletions(-)
 delete mode 100644 api-viewer/apidata.js
 create mode 100644 api-viewer/apidata.json

diff --git a/Makefile b/Makefile
index df339c2..59e507c 100644
--- a/Makefile
+++ b/Makefile
@@ -64,12 +64,12 @@ GEN_SCRIPTS=					\
 	gen-output-format-opts.pl
 
 API_VIEWER_FILES=							\
-	api-viewer/apidata.js						\
-	api-viewer/PVEAPI.js						\
+	api-viewer/apidata.js					\
+	api-viewer/PVEAPI.js					\
 	/usr/share/javascript/proxmox-widget-toolkit-dev/APIViewer.js
 
 API_VIEWER_SOURCES=				\
-	api-viewer/index.html			\
+	api-viewer/index.html		\
 	api-viewer/apidoc.js
 
 asciidoc-pve: asciidoc-pve.in link-refs.json
@@ -151,9 +151,14 @@ pve-admin-guide.epub: ${PVE_ADMIN_GUIDE_ADOCDEPENDS}
 	a2x -D $@.tmp -f epub --asciidoc-opts="${PVE_DOCBOOK_CONF}" pve-admin-guide.adoc
 	mv $@.tmp/$@ $@
 
-api-viewer/apidata.js: extractapi.pl
+api-viewer/apidata.json: extractapi.pl
 	./extractapi.pl >$@
 
+api-viewer/apidata.js: api-viewer/apidata.json
+	echo -n "const apiSchema = " > api-viewer/apidata.js
+	cat api-viewer/apidata.json | head -c-1 >> api-viewer/apidata.js
+	echo ";" >> api-viewer/apidata.js
+
 api-viewer/apidoc.js: ${API_VIEWER_FILES}
 	cat ${API_VIEWER_FILES} >$@.tmp
 	mv $@.tmp $@
@@ -236,18 +241,18 @@ update:
 .PHONY: update-static
 update-static:
 	make clean-static
-	make $(filter %-synopsis.adoc %-opts.adoc, ${PVE_ADMIN_GUIDE_ADOCDEPENDS}) pve-firewall-macros.adoc api-viewer/apidata.js
+	make $(filter %-synopsis.adoc %-opts.adoc, ${PVE_ADMIN_GUIDE_ADOCDEPENDS}) pve-firewall-macros.adoc api-viewer/apidata.json
 
 .PHONY: clean-static
 clean-static:
 	find . -regex '.*-\(opts\|synopsis\)\.adoc' -not -name pmxcfs.8-synopsis.adoc -not -name qmeventd.8-synopsis.adoc -exec rm -f \{\} \;
-	rm -f api-viewer/apidata.js
+	rm -f api-viewer/apidata.json
 	rm -f pve-firewall-macros.adoc pct-network-opts.adoc pct-mountpoint-opts.adoc
 
 clean:
 	rm -rf *.html *.pdf *.epub *.tmp *.1 *.5 *.8
 	rm -f *.deb *.changes *.buildinfo
-	rm -f api-viewer/apidoc.js chapter-*.html *-plain.html chapter-*.html pve-admin-guide.chunked asciidoc-pve link-refs.json .asciidoc-pve-tmp_* pve-docs-mediawiki-import
+	rm -f api-viewer/apidoc.js api-viewer/apidata.js chapter-*.html *-plain.html chapter-*.html pve-admin-guide.chunked asciidoc-pve link-refs.json .asciidoc-pve-tmp_* pve-docs-mediawiki-import
 	rm -rf .pve-doc-depends
 	rm -f pve-doc-generator.mk chapter-index-table.adoc man1-index-table.adoc man5-index-table.adoc man8-index-table.adoc pve-admin-guide-docinfo.xml
 	rm -rf build
diff --git a/api-viewer/apidata.js b/api-viewer/apidata.js
deleted file mode 100644
index 6562c52..0000000
--- a/api-viewer/apidata.js
+++ /dev/null
@@ -1,49787 +0,0 @@
-const apiSchema = [
-   {
-      "children" : [
-         {
-            "children" : [
-               {
-                  "info" : {
-                     "DELETE" : {
-                        "allowtoken" : 1,
-                        "description" : "Mark replication job for removal.",
-                        "method" : "DELETE",
-                        "name" : "delete",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "force" : {
-                                 "default" : 0,
-                                 "description" : "Will remove the jobconfig entry, but will not cleanup.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "id" : {
-                                 "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                 "format" : "pve-replication-job-id",
-                                 "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                 "type" : "string"
-                              },
-                              "keep" : {
-                                 "default" : 0,
-                                 "description" : "Keep replicated data at target (do not remove).",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/storage",
-                              [
-                                 "Datastore.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read replication job configuration.",
-                        "method" : "GET",
-                        "name" : "read",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "id" : {
-                                 "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                 "format" : "pve-replication-job-id",
-                                 "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update replication job configuration.",
-                        "method" : "PUT",
-                        "name" : "update",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
-                                 "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/deactivate the entry.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "id" : {
-                                 "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                 "format" : "pve-replication-job-id",
-                                 "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                 "type" : "string"
-                              },
-                              "rate" : {
-                                 "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "number",
-                                 "typetext" : "<number> (1 - N)"
-                              },
-                              "remove_job" : {
-                                 "description" : "Mark the replication job for removal. The job will remove all local replication snapshots. When set to 'full', it also tries to remove replicated volumes on the target. The job then removes itself from the configuration file.",
-                                 "enum" : [
-                                    "local",
-                                    "full"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "schedule" : {
-                                 "default" : "*/15",
-                                 "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.",
-                                 "format" : "pve-calendar-event",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "source" : {
-                                 "description" : "For internal use, to detect if the guest was stolen.",
-                                 "format" : "pve-node",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           },
-                           "type" : "object"
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/storage",
-                              [
-                                 "Datastore.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/replication/{id}",
-                  "text" : "{id}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "List replication jobs.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create a new replication job",
-                  "method" : "POST",
-                  "name" : "create",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "description" : "Description.",
-                           "maxLength" : 4096,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "disable" : {
-                           "description" : "Flag to disable/deactivate the entry.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "id" : {
-                           "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                           "format" : "pve-replication-job-id",
-                           "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                           "type" : "string"
-                        },
-                        "rate" : {
-                           "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "number",
-                           "typetext" : "<number> (1 - N)"
-                        },
-                        "remove_job" : {
-                           "description" : "Mark the replication job for removal. The job will remove all local replication snapshots. When set to 'full', it also tries to remove replicated volumes on the target. The job then removes itself from the configuration file.",
-                           "enum" : [
-                              "local",
-                              "full"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "schedule" : {
-                           "default" : "*/15",
-                           "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.",
-                           "format" : "pve-calendar-event",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "source" : {
-                           "description" : "For internal use, to detect if the guest was stolen.",
-                           "format" : "pve-node",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "target" : {
-                           "description" : "Target node.",
-                           "format" : "pve-node",
-                           "optional" : 0,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "type" : {
-                           "description" : "Section type.",
-                           "enum" : [
-                              "local"
-                           ],
-                           "type" : "string"
-                        }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/storage",
-                        [
-                           "Datastore.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/replication",
-            "text" : "replication"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "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"
-                                    },
-                                    "verify-certificate" : {
-                                       "default" : 1,
-                                       "description" : "Set to 0 to disable certificate verification for https endpoints.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 },
-                                 "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>"
-                                    },
-                                    "verify-certificate" : {
-                                       "default" : 1,
-                                       "description" : "Set to 0 to disable certificate verification for https endpoints.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 },
-                                 "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",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "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" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nodeid" : {
-                                       "description" : "Node id for this node.",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
-                                    },
-                                    "votes" : {
-                                       "description" : "Number of votes for this node",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "properties" : {
-                                    "corosync_authkey" : {
-                                       "type" : "string"
-                                    },
-                                    "corosync_conf" : {
-                                       "type" : "string"
-                                    },
-                                    "warnings" : {
-                                       "items" : {
-                                          "type" : "string"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/config/nodes/{node}",
-                        "text" : "{node}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Corosync node list.",
-                        "method" : "GET",
-                        "name" : "nodes",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "node" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{node}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/config/nodes",
-                  "text" : "nodes"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get information needed to join this cluster over the connected node.",
-                        "method" : "GET",
-                        "name" : "join_info",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "default" : "current connected node",
-                                 "description" : "The node for which the joinee gets the nodeinfo. ",
-                                 "format" : "pve-node",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "config_digest" : {
-                                 "type" : "string"
-                              },
-                              "nodelist" : {
-                                 "items" : {
-                                    "additionalProperties" : 1,
-                                    "properties" : {
-                                       "name" : {
-                                          "description" : "The cluster node name.",
-                                          "format" : "pve-node",
-                                          "type" : "string"
-                                       },
-                                       "nodeid" : {
-                                          "description" : "Node id for this node.",
-                                          "minimum" : 1,
-                                          "optional" : 1,
-                                          "type" : "integer"
-                                       },
-                                       "pve_addr" : {
-                                          "format" : "ip",
-                                          "type" : "string"
-                                       },
-                                       "pve_fp" : {
-                                          "description" : "Certificate SHA 256 fingerprint.",
-                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                          "type" : "string"
-                                       },
-                                       "quorum_votes" : {
-                                          "minimum" : 0,
-                                          "type" : "integer"
-                                       },
-                                       "ring0_addr" : {
-                                          "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"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              },
-                              "preferred_node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string"
-                              },
-                              "totem" : {
-                                 "type" : "object"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "POST" : {
-                        "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" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "fingerprint" : {
-                                 "description" : "Certificate SHA 256 fingerprint.",
-                                 "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                 "type" : "string"
-                              },
-                              "force" : {
-                                 "description" : "Do not throw error if node already exists.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "hostname" : {
-                                 "description" : "Hostname (or IP) of an existing cluster member.",
-                                 "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,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "password" : {
-                                 "description" : "Superuser (root) password of peer node.",
-                                 "maxLength" : 128,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "votes" : {
-                                 "description" : "Number of votes for this node",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              }
-                           }
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/join",
-                  "text" : "join"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get corosync totem protocol settings.",
-                        "method" : "GET",
-                        "name" : "totem",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "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"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/qdevice",
-                  "text" : "qdevice"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{name}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "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" : {
-                        "clustername" : {
-                           "description" : "The name of the cluster.",
-                           "format" : "pve-node",
-                           "maxLength" : 15,
-                           "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,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        },
-                        "votes" : {
-                           "description" : "Number of votes for this node.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        }
-                     }
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "string"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/config",
-            "text" : "config"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Delete rule.",
-                                    "method" : "DELETE",
-                                    "name" : "delete_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "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>"
-                                          },
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : null,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get single rule data.",
-                                    "method" : "GET",
-                                    "name" : "get_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "proxyto" : null,
-                                    "returns" : {
-                                       "properties" : {
-                                          "action" : {
-                                             "type" : "string"
-                                          },
-                                          "comment" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "dest" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "dport" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "enable" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "icmp-type" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "iface" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ipversion" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "type" : "integer"
-                                          },
-                                          "proto" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "source" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "sport" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "type" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Modify rule data.",
-                                    "method" : "PUT",
-                                    "name" : "update_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "action" : {
-                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "comment" : {
-                                             "description" : "Descriptive comment.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "delete" : {
-                                             "description" : "A list of settings you want to delete.",
-                                             "format" : "pve-configid-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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>"
-                                          },
-                                          "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>"
-                                          },
-                                          "dport" : {
-                                             "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-dport-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "enable" : {
-                                             "description" : "Flag to enable/disable a rule.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "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",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule.",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "description" : "Use predefined standard macro.",
-                                             "maxLength" : 128,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "moveto" : {
-                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "proto" : {
-                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                             "format" : "pve-fw-protocol-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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>"
-                                          },
-                                          "sport" : {
-                                             "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-sport-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "type" : {
-                                             "description" : "Rule type.",
-                                             "enum" : [
-                                                "in",
-                                                "out",
-                                                "group"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : null,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/firewall/groups/{group}/{pos}",
-                              "text" : "{pos}"
-                           }
-                        ],
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete security group.",
-                              "method" : "DELETE",
-                              "name" : "delete_security_group",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List rules.",
-                              "method" : "GET",
-                              "name" : "get_rules",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : null,
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "pos" : {
-                                          "type" : "integer"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{pos}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create new rule.",
-                              "method" : "POST",
-                              "name" : "create_rule",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "action" : {
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 0,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "comment" : {
-                                       "description" : "Descriptive comment.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "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>"
-                                    },
-                                    "dport" : {
-                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-dport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "enable" : {
-                                       "description" : "Flag to enable/disable a rule.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "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",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "macro" : {
-                                       "description" : "Use predefined standard macro.",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "proto" : {
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                       "format" : "pve-fw-protocol-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "sport" : {
-                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-sport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "type" : {
-                                       "description" : "Rule type.",
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ],
-                                       "optional" : 0,
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : null,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/cluster/firewall/groups/{group}",
-                        "text" : "{group}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List security groups.",
-                        "method" : "GET",
-                        "name" : "list_security_groups",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "group" : {
-                                    "description" : "Security Group name.",
-                                    "maxLength" : 18,
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{group}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create new security group.",
-                        "method" : "POST",
-                        "name" : "create_security_group",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "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>"
-                              },
-                              "group" : {
-                                 "description" : "Security Group name.",
-                                 "maxLength" : 18,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
-                              "rename" : {
-                                 "description" : "Rename/update an existing security group. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing group.",
-                                 "maxLength" : 18,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/groups",
-                  "text" : "groups"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete rule.",
-                              "method" : "DELETE",
-                              "name" : "delete_rule",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "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>"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : null,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get single rule data.",
-                              "method" : "GET",
-                              "name" : "get_rule",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : null,
-                              "returns" : {
-                                 "properties" : {
-                                    "action" : {
-                                       "type" : "string"
-                                    },
-                                    "comment" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "dest" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "dport" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "enable" : {
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "icmp-type" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "iface" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "ipversion" : {
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "macro" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "pos" : {
-                                       "type" : "integer"
-                                    },
-                                    "proto" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "source" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "sport" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Modify rule data.",
-                              "method" : "PUT",
-                              "name" : "update_rule",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "action" : {
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "comment" : {
-                                       "description" : "Descriptive comment.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "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>"
-                                    },
-                                    "dport" : {
-                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-dport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "enable" : {
-                                       "description" : "Flag to enable/disable a rule.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "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",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "macro" : {
-                                       "description" : "Use predefined standard macro.",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "moveto" : {
-                                       "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "proto" : {
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                       "format" : "pve-fw-protocol-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "sport" : {
-                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-sport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "type" : {
-                                       "description" : "Rule type.",
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : null,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/firewall/rules/{pos}",
-                        "text" : "{pos}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List rules.",
-                        "method" : "GET",
-                        "name" : "get_rules",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "proxyto" : null,
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "pos" : {
-                                    "type" : "integer"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{pos}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create new rule.",
-                        "method" : "POST",
-                        "name" : "create_rule",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "action" : {
-                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
-                                 "optional" : 0,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
-                              "comment" : {
-                                 "description" : "Descriptive comment.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "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>"
-                              },
-                              "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>"
-                              },
-                              "dport" : {
-                                 "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                 "format" : "pve-fw-dport-spec",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enable" : {
-                                 "description" : "Flag to enable/disable a rule.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "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",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "log" : {
-                                 "description" : "Log level for firewall rule.",
-                                 "enum" : [
-                                    "emerg",
-                                    "alert",
-                                    "crit",
-                                    "err",
-                                    "warning",
-                                    "notice",
-                                    "info",
-                                    "debug",
-                                    "nolog"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "macro" : {
-                                 "description" : "Use predefined standard macro.",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "pos" : {
-                                 "description" : "Update rule at position <pos>.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "proto" : {
-                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                 "format" : "pve-fw-protocol-spec",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "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>"
-                              },
-                              "sport" : {
-                                 "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                 "format" : "pve-fw-sport-spec",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Rule type.",
-                                 "enum" : [
-                                    "in",
-                                    "out",
-                                    "group"
-                                 ],
-                                 "optional" : 0,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : null,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/rules",
-                  "text" : "rules"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Remove IP or Network from IPSet.",
-                                    "method" : "DELETE",
-                                    "name" : "remove_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "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>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read IP or Network settings from IPSet.",
-                                    "method" : "GET",
-                                    "name" : "read_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Update IP or Network settings",
-                                    "method" : "PUT",
-                                    "name" : "update_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "nomatch" : {
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/firewall/ipset/{name}/{cidr}",
-                              "text" : "{cidr}"
-                           }
-                        ],
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete IPSet",
-                              "method" : "DELETE",
-                              "name" : "delete_ipset",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "force" : {
-                                       "description" : "Delete all members of the IPSet, if there are any.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List IPSet content",
-                              "method" : "GET",
-                              "name" : "get_ipset",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "cidr" : {
-                                          "type" : "string"
-                                       },
-                                       "comment" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "digest" : {
-                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                          "maxLength" : 40,
-                                          "optional" : 0,
-                                          "type" : "string"
-                                       },
-                                       "nomatch" : {
-                                          "optional" : 1,
-                                          "type" : "boolean"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{cidr}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Add IP or Network to IPSet.",
-                              "method" : "POST",
-                              "name" : "create_ip",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDRorAlias",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "comment" : {
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "nomatch" : {
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/cluster/firewall/ipset/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List IPSets",
-                        "method" : "GET",
-                        "name" : "ipset_index",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "description" : "IP set name.",
-                                    "maxLength" : 64,
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create new IPSet",
-                        "method" : "POST",
-                        "name" : "create_ipset",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "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>"
-                              },
-                              "name" : {
-                                 "description" : "IP set name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
-                              "rename" : {
-                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/ipset",
-                  "text" : "ipset"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Remove IP or Network alias.",
-                              "method" : "DELETE",
-                              "name" : "remove_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "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>"
-                                    },
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read alias.",
-                              "method" : "GET",
-                              "name" : "read_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update IP or Network alias.",
-                              "method" : "PUT",
-                              "name" : "update_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDR",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "rename" : {
-                                       "description" : "Rename an existing alias.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/firewall/aliases/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List aliases",
-                        "method" : "GET",
-                        "name" : "get_aliases",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "cidr" : {
-                                    "type" : "string"
-                                 },
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create IP or Network Alias.",
-                        "method" : "POST",
-                        "name" : "create_alias",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cidr" : {
-                                 "description" : "Network/IP specification in CIDR format.",
-                                 "format" : "IPorCIDR",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "name" : {
-                                 "description" : "Alias name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/aliases",
-                  "text" : "aliases"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get Firewall options.",
-                        "method" : "GET",
-                        "name" : "get_options",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "properties" : {
-                              "ebtables" : {
-                                 "default" : 1,
-                                 "description" : "Enable ebtables rules cluster wide.",
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "enable" : {
-                                 "description" : "Enable or disable the firewall cluster wide.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              },
-                              "log_ratelimit" : {
-                                 "description" : "Log ratelimiting settings",
-                                 "format" : {
-                                    "burst" : {
-                                       "default" : 5,
-                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "enable" : {
-                                       "default" : "1",
-                                       "default_key" : 1,
-                                       "description" : "Enable or disable log rate limiting",
-                                       "type" : "boolean"
-                                    },
-                                    "rate" : {
-                                       "default" : "1/second",
-                                       "description" : "Frequency with which the burst bucket gets refilled",
-                                       "format_description" : "rate",
-                                       "optional" : 1,
-                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_in" : {
-                                 "description" : "Input policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_out" : {
-                                 "description" : "Output policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Set Firewall options.",
-                        "method" : "PUT",
-                        "name" : "set_options",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "format" : "pve-configid-list",
-                                 "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>"
-                              },
-                              "ebtables" : {
-                                 "default" : 1,
-                                 "description" : "Enable ebtables rules cluster wide.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "enable" : {
-                                 "description" : "Enable or disable the firewall cluster wide.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "log_ratelimit" : {
-                                 "description" : "Log ratelimiting settings",
-                                 "format" : {
-                                    "burst" : {
-                                       "default" : 5,
-                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "enable" : {
-                                       "default" : "1",
-                                       "default_key" : 1,
-                                       "description" : "Enable or disable log rate limiting",
-                                       "type" : "boolean"
-                                    },
-                                    "rate" : {
-                                       "default" : "1/second",
-                                       "description" : "Frequency with which the burst bucket gets refilled",
-                                       "format_description" : "rate",
-                                       "optional" : 1,
-                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[enable=]<1|0> [,burst=<integer>] [,rate=<rate>]"
-                              },
-                              "policy_in" : {
-                                 "description" : "Input policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_out" : {
-                                 "description" : "Output policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/firewall/options",
-                  "text" : "options"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List available macros",
-                        "method" : "GET",
-                        "name" : "get_macros",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "descr" : {
-                                    "description" : "More verbose description (if available).",
-                                    "type" : "string"
-                                 },
-                                 "macro" : {
-                                    "description" : "Macro name.",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/firewall/macros",
-                  "text" : "macros"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
-                        "method" : "GET",
-                        "name" : "refs",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "type" : {
-                                 "description" : "Only list references of specified type.",
-                                 "enum" : [
-                                    "alias",
-                                    "ipset"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "type" : "string"
-                                 },
-                                 "ref" : {
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "enum" : [
-                                       "alias",
-                                       "ipset"
-                                    ],
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/firewall/refs",
-                  "text" : "refs"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory 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/firewall",
-            "text" : "firewall"
-         },
-         {
-            "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read vzdump backup job definition.",
-                        "method" : "GET",
-                        "name" : "read_job",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update vzdump backup job definition.",
-                        "method" : "PUT",
-                        "name" : "update_job",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "all" : {
-                                 "default" : 0,
-                                 "description" : "Backup all known guest systems on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "bwlimit" : {
-                                 "default" : 0,
-                                 "description" : "Limit I/O bandwidth (KBytes per second).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "comment" : {
-                                 "description" : "Description for the Job.",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "compress" : {
-                                 "default" : "0",
-                                 "description" : "Compress dump file.",
-                                 "enum" : [
-                                    "0",
-                                    "1",
-                                    "gzip",
-                                    "lzo",
-                                    "zstd"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "format" : "pve-configid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dow" : {
-                                 "description" : "Day of week selection.",
-                                 "format" : "pve-day-of-week-list",
-                                 "optional" : 1,
-                                 "requires" : "starttime",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dumpdir" : {
-                                 "description" : "Store resulting files to specified directory.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enabled" : {
-                                 "default" : "1",
-                                 "description" : "Enable or disable the job.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "exclude" : {
-                                 "description" : "Exclude specified guest systems (assumes --all)",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<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",
-                                 "typetext" : "<string>"
-                              },
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ionice" : {
-                                 "default" : 7,
-                                 "description" : "Set CFQ ionice priority.",
-                                 "maximum" : 8,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 8)"
-                              },
-                              "lockwait" : {
-                                 "default" : 180,
-                                 "description" : "Maximal time to wait for the global lock (minutes).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "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",
-                                 "typetext" : "<string>"
-                              },
-                              "maxfiles" : {
-                                 "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "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",
-                                 "typetext" : "<string>"
-                              },
-                              "notes-template" : {
-                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                                 "maxLength" : 1024,
-                                 "optional" : 1,
-                                 "requires" : "storage",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "performance" : {
-                                 "description" : "Other performance-related settings.",
-                                 "format" : "backup-performance",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[max-workers=<integer>]"
-                              },
-                              "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",
-                                 "typetext" : "<integer>"
-                              },
-                              "pool" : {
-                                 "description" : "Backup all known guest systems included in the specified pool.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "protected" : {
-                                 "description" : "If true, mark backup(s) as protected.",
-                                 "optional" : 1,
-                                 "requires" : "storage",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "remove" : {
-                                 "default" : 1,
-                                 "description" : "Prune older backups according to 'prune-backups'.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "repeat-missed" : {
-                                 "default" : 0,
-                                 "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "schedule" : {
-                                 "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
-                                 "format" : "pve-calendar-event",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "script" : {
-                                 "description" : "Use specified hook script.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "Job Start time.",
-                                 "optional" : 1,
-                                 "pattern" : "\\d{1,2}:\\d{1,2}",
-                                 "type" : "string",
-                                 "typetext" : "HH:MM"
-                              },
-                              "stdexcludes" : {
-                                 "default" : 1,
-                                 "description" : "Exclude temporary files and logs.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stop" : {
-                                 "default" : 0,
-                                 "description" : "Stop running backup jobs on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stopwait" : {
-                                 "default" : 10,
-                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "storage" : {
-                                 "description" : "Store resulting file to this storage.",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "tmpdir" : {
-                                 "description" : "Store temporary files to specified directory.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vmid" : {
-                                 "description" : "The ID of the guest system you want to backup.",
-                                 "format" : "pve-vmid-list",
-                                 "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" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ],
-                           "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root at pam' user."
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/backup/{id}",
-                  "text" : "{id}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "List vzdump backup schedule.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "id" : {
-                              "description" : "The job ID.",
-                              "maxLength" : 50,
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new vzdump backup job.",
-                  "method" : "POST",
-                  "name" : "create_job",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "all" : {
-                           "default" : 0,
-                           "description" : "Backup all known guest systems on this host.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "bwlimit" : {
-                           "default" : 0,
-                           "description" : "Limit I/O bandwidth (KBytes per second).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "comment" : {
-                           "description" : "Description for the Job.",
-                           "maxLength" : 512,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "compress" : {
-                           "default" : "0",
-                           "description" : "Compress dump file.",
-                           "enum" : [
-                              "0",
-                              "1",
-                              "gzip",
-                              "lzo",
-                              "zstd"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "dow" : {
-                           "default" : "mon,tue,wed,thu,fri,sat,sun",
-                           "description" : "Day of week selection.",
-                           "format" : "pve-day-of-week-list",
-                           "optional" : 1,
-                           "requires" : "starttime",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "dumpdir" : {
-                           "description" : "Store resulting files to specified directory.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "enabled" : {
-                           "default" : "1",
-                           "description" : "Enable or disable the job.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "exclude" : {
-                           "description" : "Exclude specified guest systems (assumes --all)",
-                           "format" : "pve-vmid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<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",
-                           "typetext" : "<string>"
-                        },
-                        "id" : {
-                           "description" : "Job ID (will be autogenerated).",
-                           "format" : "pve-configid",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "ionice" : {
-                           "default" : 7,
-                           "description" : "Set CFQ ionice priority.",
-                           "maximum" : 8,
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - 8)"
-                        },
-                        "lockwait" : {
-                           "default" : 180,
-                           "description" : "Maximal time to wait for the global lock (minutes).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "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",
-                           "typetext" : "<string>"
-                        },
-                        "maxfiles" : {
-                           "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        },
-                        "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",
-                           "typetext" : "<string>"
-                        },
-                        "notes-template" : {
-                           "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                           "maxLength" : 1024,
-                           "optional" : 1,
-                           "requires" : "storage",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "performance" : {
-                           "description" : "Other performance-related settings.",
-                           "format" : "backup-performance",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[max-workers=<integer>]"
-                        },
-                        "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",
-                           "typetext" : "<integer>"
-                        },
-                        "pool" : {
-                           "description" : "Backup all known guest systems included in the specified pool.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "protected" : {
-                           "description" : "If true, mark backup(s) as protected.",
-                           "optional" : 1,
-                           "requires" : "storage",
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "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.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "remove" : {
-                           "default" : 1,
-                           "description" : "Prune older backups according to 'prune-backups'.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "repeat-missed" : {
-                           "default" : 0,
-                           "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "schedule" : {
-                           "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
-                           "format" : "pve-calendar-event",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "script" : {
-                           "description" : "Use specified hook script.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "starttime" : {
-                           "description" : "Job Start time.",
-                           "optional" : 1,
-                           "pattern" : "\\d{1,2}:\\d{1,2}",
-                           "type" : "string",
-                           "typetext" : "HH:MM"
-                        },
-                        "stdexcludes" : {
-                           "default" : 1,
-                           "description" : "Exclude temporary files and logs.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "stop" : {
-                           "default" : 0,
-                           "description" : "Stop running backup jobs on this host.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "stopwait" : {
-                           "default" : 10,
-                           "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "storage" : {
-                           "description" : "Store resulting file to this storage.",
-                           "format" : "pve-storage-id",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "tmpdir" : {
-                           "description" : "Store temporary files to specified directory.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "vmid" : {
-                           "description" : "The ID of the guest system you want to backup.",
-                           "format" : "pve-vmid-list",
-                           "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" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Modify"
-                        ]
-                     ],
-                     "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root at pam' user."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "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/backup-info/not-backed-up",
-                  "text" : "not-backed-up"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Index for backup info related endpoints",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "returns" : {
-                     "description" : "Directory index.",
-                     "items" : {
-                        "properties" : {
-                           "subdir" : {
-                              "description" : "API sub-directory endpoint",
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{subdir}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/backup-info",
-            "text" : "backup-info"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Request resource migration (online) to another node.",
-                                    "method" : "POST",
-                                    "name" : "migrate",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "sid" : {
-                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                             "format" : "pve-ha-resource-or-vm-id",
-                                             "type" : "string",
-                                             "typetext" : "<type>:<name>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/ha/resources/{sid}/migrate",
-                              "text" : "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",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "sid" : {
-                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                             "format" : "pve-ha-resource-or-vm-id",
-                                             "type" : "string",
-                                             "typetext" : "<type>:<name>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/ha/resources/{sid}/relocate",
-                              "text" : "relocate"
-                           }
-                        ],
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete resource configuration.",
-                              "method" : "DELETE",
-                              "name" : "delete",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read resource configuration.",
-                              "method" : "GET",
-                              "name" : "read",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "digest" : {
-                                       "description" : "Can be used to prevent concurrent modifications.",
-                                       "type" : "string"
-                                    },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "max_relocate" : {
-                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "max_restart" : {
-                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    },
-                                    "state" : {
-                                       "description" : "Requested resource state.",
-                                       "enum" : [
-                                          "started",
-                                          "stopped",
-                                          "enabled",
-                                          "disabled",
-                                          "ignored"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "description" : "The type of the resources.",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update resource configuration.",
-                              "method" : "PUT",
-                              "name" : "update",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "maxLength" : 4096,
-                                       "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>"
-                                    },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "max_relocate" : {
-                                       "default" : 1,
-                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "max_restart" : {
-                                       "default" : 1,
-                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    },
-                                    "state" : {
-                                       "default" : "started",
-                                       "description" : "Requested resource state.",
-                                       "enum" : [
-                                          "started",
-                                          "stopped",
-                                          "enabled",
-                                          "disabled",
-                                          "ignored"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
-                                    }
-                                 },
-                                 "type" : "object"
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/cluster/ha/resources/{sid}",
-                        "text" : "{sid}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List HA resources.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "type" : {
-                                 "description" : "Only list resources of specific type",
-                                 "enum" : [
-                                    "ct",
-                                    "vm"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "sid" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{sid}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create a new HA resource.",
-                        "method" : "POST",
-                        "name" : "create",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "group" : {
-                                 "description" : "The HA group identifier.",
-                                 "format" : "pve-configid",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "max_relocate" : {
-                                 "default" : 1,
-                                 "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "max_restart" : {
-                                 "default" : 1,
-                                 "description" : "Maximal number of tries to restart the service on a node after its start failed.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "sid" : {
-                                 "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                 "format" : "pve-ha-resource-or-vm-id",
-                                 "type" : "string",
-                                 "typetext" : "<type>:<name>"
-                              },
-                              "state" : {
-                                 "default" : "started",
-                                 "description" : "Requested resource state.",
-                                 "enum" : [
-                                    "started",
-                                    "stopped",
-                                    "enabled",
-                                    "disabled",
-                                    "ignored"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
-                              },
-                              "type" : {
-                                 "description" : "Resource type.",
-                                 "enum" : [
-                                    "ct",
-                                    "vm"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/ha/resources",
-                  "text" : "resources"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete ha group configuration.",
-                              "method" : "DELETE",
-                              "name" : "delete",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read ha group configuration.",
-                              "method" : "GET",
-                              "name" : "read",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {}
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update ha group configuration.",
-                              "method" : "PUT",
-                              "name" : "update",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "maxLength" : 4096,
-                                       "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>"
-                                    },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nodes" : {
-                                       "description" : "List of cluster node names with optional priority.",
-                                       "format" : "pve-ha-group-node-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
-                                       "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
-                                    },
-                                    "nofailback" : {
-                                       "default" : 0,
-                                       "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "restricted" : {
-                                       "default" : 0,
-                                       "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>",
-                                       "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
-                                    }
-                                 },
-                                 "type" : "object"
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/ha/groups/{group}",
-                        "text" : "{group}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get HA groups.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "group" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{group}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create a new HA group.",
-                        "method" : "POST",
-                        "name" : "create",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "group" : {
-                                 "description" : "The HA group identifier.",
-                                 "format" : "pve-configid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "nodes" : {
-                                 "description" : "List of cluster node names with optional priority.",
-                                 "format" : "pve-ha-group-node-list",
-                                 "optional" : 0,
-                                 "type" : "string",
-                                 "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
-                                 "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
-                              },
-                              "nofailback" : {
-                                 "default" : 0,
-                                 "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "restricted" : {
-                                 "default" : 0,
-                                 "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>",
-                                 "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
-                              },
-                              "type" : {
-                                 "description" : "Group type.",
-                                 "enum" : [
-                                    "group"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/ha/groups",
-                  "text" : "groups"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get HA manger status.",
-                              "method" : "GET",
-                              "name" : "status",
-                              "parameters" : {
-                                 "additionalProperties" : 0
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/ha/status/current",
-                        "text" : "current"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get full HA manger status, including LRM status.",
-                              "method" : "GET",
-                              "name" : "manager_status",
-                              "parameters" : {
-                                 "additionalProperties" : 0
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/ha/status/manager_status",
-                        "text" : "manager_status"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Directory 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/ha/status",
-                  "text" : "status"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "id" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/ha",
-            "text" : "ha"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "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",
-                                          "azion",
-                                          "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",
-                                          "oci",
-                                          "one",
-                                          "online",
-                                          "openprovider",
-                                          "openstack",
-                                          "opnsense",
-                                          "ovh",
-                                          "pdns",
-                                          "pleskxml",
-                                          "pointhq",
-                                          "porkbun",
-                                          "rackcorp",
-                                          "rackspace",
-                                          "rcode0",
-                                          "regru",
-                                          "scaleway",
-                                          "schlundtech",
-                                          "selectel",
-                                          "servercow",
-                                          "simply",
-                                          "tele3",
-                                          "transip",
-                                          "ultra",
-                                          "unoeuro",
-                                          "variomedia",
-                                          "veesp",
-                                          "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",
-                                    "azion",
-                                    "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",
-                                    "oci",
-                                    "one",
-                                    "online",
-                                    "openprovider",
-                                    "openstack",
-                                    "opnsense",
-                                    "ovh",
-                                    "pdns",
-                                    "pleskxml",
-                                    "pointhq",
-                                    "porkbun",
-                                    "rackcorp",
-                                    "rackspace",
-                                    "rcode0",
-                                    "regru",
-                                    "scaleway",
-                                    "schlundtech",
-                                    "selectel",
-                                    "servercow",
-                                    "simply",
-                                    "tele3",
-                                    "transip",
-                                    "ultra",
-                                    "unoeuro",
-                                    "variomedia",
-                                    "veesp",
-                                    "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",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
-                                       "format" : "pve-configid",
-                                       "format_description" : "name",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<name>"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Return existing ACME account information.",
-                              "method" : "GET",
-                              "name" : "get_account",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
-                                       "format" : "pve-configid",
-                                       "format_description" : "name",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<name>"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "account" : {
-                                       "optional" : 1,
-                                       "renderer" : "yaml",
-                                       "type" : "object"
-                                    },
-                                    "directory" : {
-                                       "description" : "URL of ACME CA directory endpoint.",
-                                       "optional" : 1,
-                                       "pattern" : "^https?://.*",
-                                       "type" : "string"
-                                    },
-                                    "location" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "tos" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "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",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "contact" : {
-                                       "description" : "Contact email addresses.",
-                                       "format" : "email-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
-                                       "format" : "pve-configid",
-                                       "format_description" : "name",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<name>"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/acme/account/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "ACMEAccount index.",
-                        "method" : "GET",
-                        "name" : "account_index",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Register a new ACME account with CA.",
-                        "method" : "POST",
-                        "name" : "register_account",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "contact" : {
-                                 "description" : "Contact email addresses.",
-                                 "format" : "email-list",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "directory" : {
-                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
-                                 "description" : "URL of ACME CA directory endpoint.",
-                                 "optional" : 1,
-                                 "pattern" : "^https?://.*",
-                                 "type" : "string"
-                              },
-                              "name" : {
-                                 "default" : "default",
-                                 "description" : "ACME account config file name.",
-                                 "format" : "pve-configid",
-                                 "format_description" : "name",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<name>"
-                              },
-                              "tos_url" : {
-                                 "description" : "URL of CA TermsOfService - setting this indicates agreement.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/acme/account",
-                  "text" : "account"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Retrieve ACME TermsOfService URL from CA.",
-                        "method" : "GET",
-                        "name" : "get_tos",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "directory" : {
-                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
-                                 "description" : "URL of ACME CA directory endpoint.",
-                                 "optional" : 1,
-                                 "pattern" : "^https?://.*",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "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" : 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" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Returns a list of future schedule runtimes.",
-                        "method" : "GET",
-                        "name" : "schedule-analyze",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "iterations" : {
-                                 "default" : 10,
-                                 "description" : "Number of event-iteration to simulate and return.",
-                                 "maximum" : 100,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 100)"
-                              },
-                              "schedule" : {
-                                 "description" : "Job schedule. The format is a subset of `systemd` calendar events.",
-                                 "format" : "pve-calendar-event",
-                                 "maxLength" : 128,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "UNIX timestamp to start the calculation from. Defaults to the current time.",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "description" : "An array of the next <iterations> events since <starttime>.",
-                           "items" : {
-                              "properties" : {
-                                 "timestamp" : {
-                                    "description" : "UNIX timestamp for the run.",
-                                    "type" : "integer"
-                                 },
-                                 "utc" : {
-                                    "description" : "UTC timestamp for the run.",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/jobs/schedule-analyze",
-                  "text" : "schedule-analyze"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Index for jobs related endpoints.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "description" : "Directory index.",
-                     "items" : {
-                        "properties" : {
-                           "subdir" : {
-                              "description" : "API sub-directory endpoint",
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{subdir}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/jobs",
-            "text" : "jobs"
-         },
-         {
-            "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",
-                                       "maxLength" : 256,
-                                       "optional" : 1,
-                                       "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
-                                       "type" : "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",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
-                                 "type" : "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" : {
-                                    "advertise-subnets" : {
-                                       "description" : "Advertise evpn subnets if you have silent hosts",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "bridge" : {
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "bridge-disable-mac-learning" : {
-                                       "description" : "Disable auto mac learning.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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>"
-                                    },
-                                    "disable-arp-nd-suppression" : {
-                                       "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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>"
-                                    },
-                                    "exitnodes-local-routing" : {
-                                       "description" : "Allow exitnodes to connect to evpn guests",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "exitnodes-primary" : {
-                                       "description" : "Force traffic to this exitnode first.",
-                                       "format" : "pve-node",
-                                       "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>"
-                                    },
-                                    "rt-import" : {
-                                       "description" : "Route-Target import",
-                                       "format" : "pve-sdn-bgp-rt-list",
-                                       "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" : {
-                              "advertise-subnets" : {
-                                 "description" : "Advertise evpn subnets if you have silent hosts",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "bridge" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "bridge-disable-mac-learning" : {
-                                 "description" : "Disable auto mac learning.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "controller" : {
-                                 "description" : "Frr router name",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "disable-arp-nd-suppression" : {
-                                 "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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>"
-                              },
-                              "exitnodes-local-routing" : {
-                                 "description" : "Allow exitnodes to connect to evpn guests",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "exitnodes-primary" : {
-                                 "description" : "Force traffic to this exitnode first.",
-                                 "format" : "pve-node",
-                                 "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>"
-                              },
-                              "rt-import" : {
-                                 "description" : "Route-Target import",
-                                 "format" : "pve-sdn-bgp-rt-list",
-                                 "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",
-                                       "maximum" : 4294967296,
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - 4294967296)"
-                                    },
-                                    "bgp-multipath-as-path-relax" : {
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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",
-                                 "maximum" : 4294967296,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 4294967296)"
-                              },
-                              "bgp-multipath-as-path-relax" : {
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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" : {
-                        "allowtoken" : 1,
-                        "description" : "SDN dns index.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "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" : {
-                              "properties" : {
-                                 "dns" : {
-                                    "type" : "string"
-                                 },
-                                 "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" : 0,
-                  "path" : "/cluster/sdn/dns",
-                  "text" : "dns"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "SDN.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "id" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 1,
-                  "description" : "Apply sdn controller changes && reload.",
-                  "method" : "PUT",
-                  "name" : "reload",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/sdn",
-                        [
-                           "SDN.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "string"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/sdn",
-            "text" : "sdn"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Read cluster log",
-                  "method" : "GET",
-                  "name" : "log",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "max" : {
-                           "description" : "Maximum number of entries.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
-                     },
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/log",
-            "text" : "log"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Resources index (cluster wide).",
-                  "method" : "GET",
-                  "name" : "resources",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "type" : {
-                           "enum" : [
-                              "vm",
-                              "storage",
-                              "node",
-                              "sdn"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "cgroup-mode" : {
-                              "description" : "The cgroup mode the node operates under (when type == node).",
-                              "optional" : 1,
-                              "type" : "integer"
-                           },
-                           "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).",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "renderer" : "fraction_as_percentage",
-                              "type" : "number"
-                           },
-                           "disk" : {
-                              "description" : "Used disk space in bytes (when type in storage), used root image spave for VMs (type in qemu,lxc).",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "renderer" : "bytes",
-                              "type" : "integer"
-                           },
-                           "hastate" : {
-                              "description" : "HA service status (for HA managed VMs).",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "id" : {
-                              "type" : "string"
-                           },
-                           "level" : {
-                              "description" : "Support level (when type == node).",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "maxcpu" : {
-                              "description" : "Number of available CPUs (when type in node,qemu,lxc).",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "type" : "number"
-                           },
-                           "maxdisk" : {
-                              "description" : "Storage size in bytes (when type in storage), root image size for VMs (type in qemu,lxc).",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "renderer" : "bytes",
-                              "type" : "integer"
-                           },
-                           "maxmem" : {
-                              "description" : "Number of available memory in bytes (when type in node,qemu,lxc).",
-                              "optional" : 1,
-                              "renderer" : "bytes",
-                              "type" : "integer"
-                           },
-                           "mem" : {
-                              "description" : "Used memory in bytes (when type in node,qemu,lxc).",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "renderer" : "bytes",
-                              "type" : "integer"
-                           },
-                           "name" : {
-                              "description" : "Name of the resource.",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "node" : {
-                              "description" : "The cluster node name (when type in node,storage,qemu,lxc).",
-                              "format" : "pve-node",
-                              "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,
-                              "type" : "string"
-                           },
-                           "status" : {
-                              "description" : "Resource type dependent status.",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "storage" : {
-                              "description" : "The storage identifier (when type == storage).",
-                              "format" : "pve-storage-id",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "type" : {
-                              "description" : "Resource type.",
-                              "enum" : [
-                                 "node",
-                                 "storage",
-                                 "pool",
-                                 "qemu",
-                                 "lxc",
-                                 "openvz",
-                                 "sdn"
-                              ],
-                              "type" : "string"
-                           },
-                           "uptime" : {
-                              "description" : "Node uptime in seconds (when type in node,qemu,lxc).",
-                              "optional" : 1,
-                              "renderer" : "duration",
-                              "type" : "integer"
-                           },
-                           "vmid" : {
-                              "description" : "The numerical vmid (when type in qemu,lxc).",
-                              "minimum" : 1,
-                              "optional" : 1,
-                              "type" : "integer"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/resources",
-            "text" : "resources"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "List recent tasks (cluster wide).",
-                  "method" : "GET",
-                  "name" : "tasks",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "upid" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/tasks",
-            "text" : "tasks"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Get datacenter options. Without 'Sys.Audit' on '/' not all options are returned.",
-                  "method" : "GET",
-                  "name" : "get_options",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ],
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 1,
-                  "description" : "Set datacenter options.",
-                  "method" : "PUT",
-                  "name" : "set_options",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "bwlimit" : {
-                           "description" : "Set bandwidth/io limits various operations.",
-                           "format" : {
-                              "clone" : {
-                                 "description" : "bandwidth limit in KiB/s for cloning disks",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "default" : {
-                                 "description" : "default bandwidth limit in KiB/s",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "migration" : {
-                                 "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "move" : {
-                                 "description" : "bandwidth limit in KiB/s for moving disks",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "restore" : {
-                                 "description" : "bandwidth limit in KiB/s for restoring guests from backups",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
-                        },
-                        "console" : {
-                           "description" : "Select the default Console viewer. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer comtatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.",
-                           "enum" : [
-                              "applet",
-                              "vv",
-                              "html5",
-                              "xtermjs"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "crs" : {
-                           "description" : "Cluster resource scheduling settings.",
-                           "format" : {
-                              "ha" : {
-                                 "default" : "basic",
-                                 "description" : "Use this resource scheduler mode for HA.",
-                                 "enum" : [
-                                    "basic",
-                                    "static"
-                                 ],
-                                 "type" : "string",
-                                 "verbose_description" : "Configures how the HA manager should select nodes to start or recover services. With 'basic', only the number of services is used, with 'static', static CPU and memory configuration of services is considered."
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "ha=<basic|static>"
-                        },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "description" : {
-                           "description" : "Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.",
-                           "maxLength" : 65536,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "email_from" : {
-                           "description" : "Specify email address to send notification from (default is root@$hostname)",
-                           "format" : "email-opt",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "fencing" : {
-                           "default" : "watchdog",
-                           "description" : "Set the fencing mode of the HA cluster. Hardware mode needs a valid configuration of fence devices in /etc/pve/ha/fence.cfg. With both all two modes are used.\n\nWARNING: 'hardware' and 'both' are EXPERIMENTAL & WIP",
-                           "enum" : [
-                              "watchdog",
-                              "hardware",
-                              "both"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "ha" : {
-                           "description" : "Cluster wide HA settings.",
-                           "format" : {
-                              "shutdown_policy" : {
-                                 "default" : "conditional",
-                                 "description" : "The policy for HA services on node shutdown. 'freeze' disables auto-recovery, 'failover' ensures recovery, 'conditional' recovers on poweroff and freezes on reboot. 'migrate' will migrate running services to other nodes, if possible. With 'freeze' or 'failover', HA Services will always get stopped first on shutdown.",
-                                 "enum" : [
-                                    "freeze",
-                                    "failover",
-                                    "conditional",
-                                    "migrate"
-                                 ],
-                                 "type" : "string",
-                                 "verbose_description" : "Describes the policy for handling HA services on poweroff or reboot of a node. Freeze will always freeze services which are still located on the node on shutdown, those services won't be recovered by the HA manager. Failover will not mark the services as frozen and thus the services will get recovered to other nodes, if the shutdown node does not come up again quickly (< 1min). 'conditional' chooses automatically depending on the type of shutdown, i.e., on a reboot the service will be frozen but on a poweroff the service will stay as is, and thus get recovered after about 2 minutes. Migrate will try to move all running services to another node when a reboot or shutdown was triggered. The poweroff process will only continue once no running services are located on the node anymore. If the node comes up again, the service will be moved back to the previously powered-off node, at least if no other migration, reloaction or recovery took place."
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "shutdown_policy=<enum>"
-                        },
-                        "http_proxy" : {
-                           "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')",
-                           "optional" : 1,
-                           "pattern" : "http://.*",
-                           "type" : "string"
-                        },
-                        "keyboard" : {
-                           "description" : "Default keybord layout for vnc server.",
-                           "enum" : [
-                              "de",
-                              "de-ch",
-                              "da",
-                              "en-gb",
-                              "en-us",
-                              "es",
-                              "fi",
-                              "fr",
-                              "fr-be",
-                              "fr-ca",
-                              "fr-ch",
-                              "hu",
-                              "is",
-                              "it",
-                              "ja",
-                              "lt",
-                              "mk",
-                              "nl",
-                              "no",
-                              "pl",
-                              "pt",
-                              "pt-br",
-                              "sv",
-                              "sl",
-                              "tr"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "language" : {
-                           "description" : "Default GUI language.",
-                           "enum" : [
-                              "ca",
-                              "da",
-                              "de",
-                              "en",
-                              "es",
-                              "eu",
-                              "fa",
-                              "fr",
-                              "he",
-                              "it",
-                              "ja",
-                              "nb",
-                              "nn",
-                              "pl",
-                              "pt_BR",
-                              "ru",
-                              "sl",
-                              "sv",
-                              "tr",
-                              "zh_CN",
-                              "zh_TW"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "mac_prefix" : {
-                           "description" : "Prefix for autogenerated MAC addresses.",
-                           "format" : "mac-prefix",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "max_workers" : {
-                           "description" : "Defines how many workers (per node) are maximal started  on actions like 'stopall VMs' or task from the ha-manager.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        },
-                        "migration" : {
-                           "description" : "For cluster wide migration settings.",
-                           "format" : {
-                              "network" : {
-                                 "description" : "CIDR of the (sub) network that is used for migration.",
-                                 "format" : "CIDR",
-                                 "format_description" : "CIDR",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "type" : {
-                                 "default" : "secure",
-                                 "default_key" : 1,
-                                 "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
-                                 "enum" : [
-                                    "secure",
-                                    "insecure"
-                                 ],
-                                 "type" : "string"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[type=]<secure|insecure> [,network=<CIDR>]"
-                        },
-                        "migration_unsecure" : {
-                           "description" : "Migration is secure using SSH tunnel by default. For secure private networks you can disable it to speed up migration. Deprecated, use the 'migration' property instead!",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "next-id" : {
-                           "description" : "Control the range for the free VMID auto-selection pool.",
-                           "format" : {
-                              "lower" : {
-                                 "default" : 100,
-                                 "description" : "Lower, inclusive boundary for free next-id API range.",
-                                 "max" : 999999999,
-                                 "min" : 100,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              },
-                              "upper" : {
-                                 "default" : 1000000,
-                                 "description" : "Upper, exclusive boundary for free next-id API range.",
-                                 "max" : 1000000000,
-                                 "min" : 100,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[lower=<integer>] [,upper=<integer>]"
-                        },
-                        "registered-tags" : {
-                           "description" : "A list of tags that require a `Sys.Modify` on '/' to set and delete. Tags set here that are also in 'user-tag-access' also require `Sys.Modify`.",
-                           "optional" : 1,
-                           "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*);)*(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)",
-                           "type" : "string",
-                           "typetext" : "<tag>[;<tag>...]"
-                        },
-                        "tag-style" : {
-                           "description" : "Tag style options.",
-                           "format" : {
-                              "case-sensitive" : {
-                                 "default" : 0,
-                                 "description" : "Controls if filtering for unique tags on update should check case-sensitive.",
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "color-map" : {
-                                 "description" : "Manual color mapping for tags (semicolon separated).",
-                                 "optional" : 1,
-                                 "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?)(?:;(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?))*",
-                                 "type" : "string",
-                                 "typetext" : "<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]"
-                              },
-                              "ordering" : {
-                                 "default" : "alphabetical",
-                                 "description" : "Controls the sorting of the tags in the web-interface and the API update.",
-                                 "enum" : [
-                                    "config",
-                                    "alphabetical"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "shape" : {
-                                 "default" : "circle",
-                                 "description" : "Tag shape for the web ui tree. 'full' draws the full tag. 'circle' draws only a circle with the background color. 'dense' only draws a small rectancle (useful when many tags are assigned to each guest).'none' disables showing the tags.",
-                                 "enum" : [
-                                    "full",
-                                    "circle",
-                                    "dense",
-                                    "none"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[case-sensitive=<1|0>] [,color-map=<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]] [,ordering=<config|alphabetical>] [,shape=<enum>]"
-                        },
-                        "u2f" : {
-                           "description" : "u2f",
-                           "format" : {
-                              "appid" : {
-                                 "description" : "U2F AppId URL override. Defaults to the origin.",
-                                 "format_description" : "APPID",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "origin" : {
-                                 "description" : "U2F Origin override. Mostly useful for single nodes with a single URL.",
-                                 "format_description" : "URL",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[appid=<APPID>] [,origin=<URL>]"
-                        },
-                        "user-tag-access" : {
-                           "description" : "Privilege options for user-settable tags",
-                           "format" : {
-                              "user-allow" : {
-                                 "default" : "free",
-                                 "description" : "Controls tag usage for users without `Sys.Modify` on `/` by either allowing `none`, a `list`, already `existing` or anything (`free`).",
-                                 "enum" : [
-                                    "none",
-                                    "list",
-                                    "existing",
-                                    "free"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "verbose_description" : "Controls which tags can be set or deleted on resources a user controls (such as guests). Users with the `Sys.Modify` privilege on `/` are always  unrestricted. 'none' no tags are usable. 'list' tags from 'user-allow-list' are usable. 'existing' like list, but already existing tags of resources are also usable.'free' no tag restrictions."
-                              },
-                              "user-allow-list" : {
-                                 "description" : "List of tags users are allowed to set and delete (semicolon separated) for 'user-allow' values 'list' and 'existing'.",
-                                 "optional" : 1,
-                                 "pattern" : "(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)(?:;(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*))*",
-                                 "type" : "string",
-                                 "typetext" : "<tag>[;<tag>...]"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[user-allow=<enum>] [,user-allow-list=<tag>[;<tag>...]]"
-                        },
-                        "webauthn" : {
-                           "description" : "webauthn configuration",
-                           "format" : {
-                              "allow-subdomains" : {
-                                 "default" : 1,
-                                 "description" : "Whether to allow the origin to be a subdomain, rather than the exact URL.",
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "id" : {
-                                 "description" : "Relying party ID. Must be the domain name without protocol, port or location. Changing this *will* break existing credentials.",
-                                 "format_description" : "DOMAINNAME",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "origin" : {
-                                 "description" : "Site origin. Must be a `https://` URL (or `http://localhost`). Should contain the address users type in their browsers to access the web interface. Changing this *may* break existing credentials.",
-                                 "format_description" : "URL",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "rp" : {
-                                 "description" : "Relying party name. Any text identifier. Changing this *may* break existing credentials.",
-                                 "format_description" : "RELYING_PARTY",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[allow-subdomains=<1|0>] [,id=<DOMAINNAME>] [,origin=<URL>] [,rp=<RELYING_PARTY>]"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Modify"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/options",
-            "text" : "options"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Get cluster status information.",
-                  "method" : "GET",
-                  "name" : "get_status",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "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"
-                     },
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/status",
-            "text" : "status"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Get next free VMID. Pass a VMID to assert that its free (at time of check).",
-                  "method" : "GET",
-                  "name" : "nextid",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "vmid" : {
-                           "description" : "The (unique) ID of the VM.",
-                           "format" : "pve-vmid",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "description" : "The next free VMID.",
-                     "type" : "integer"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/cluster/nextid",
-            "text" : "nextid"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "Cluster 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",
-      "text" : "cluster"
-   },
-   {
-      "children" : [
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "children" : [
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Delete rule.",
-                                                "method" : "DELETE",
-                                                "name" : "delete_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "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>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Get single rule data.",
-                                                "method" : "GET",
-                                                "name" : "get_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "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.Audit"
-                                                      ]
-                                                   ]
-                                                },
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "properties" : {
-                                                      "action" : {
-                                                         "type" : "string"
-                                                      },
-                                                      "comment" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "dest" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "dport" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "enable" : {
-                                                         "optional" : 1,
-                                                         "type" : "integer"
-                                                      },
-                                                      "icmp-type" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "iface" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "ipversion" : {
-                                                         "optional" : 1,
-                                                         "type" : "integer"
-                                                      },
-                                                      "log" : {
-                                                         "description" : "Log level for firewall rule",
-                                                         "enum" : [
-                                                            "emerg",
-                                                            "alert",
-                                                            "crit",
-                                                            "err",
-                                                            "warning",
-                                                            "notice",
-                                                            "info",
-                                                            "debug",
-                                                            "nolog"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "macro" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "pos" : {
-                                                         "type" : "integer"
-                                                      },
-                                                      "proto" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "source" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "sport" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "type" : {
-                                                         "type" : "string"
-                                                      }
-                                                   },
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Modify rule data.",
-                                                "method" : "PUT",
-                                                "name" : "update_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "action" : {
-                                                         "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                                         "maxLength" : 20,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "comment" : {
-                                                         "description" : "Descriptive comment.",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "delete" : {
-                                                         "description" : "A list of settings you want to delete.",
-                                                         "format" : "pve-configid-list",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "dport" : {
-                                                         "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                         "format" : "pve-fw-dport-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "enable" : {
-                                                         "description" : "Flag to enable/disable a rule.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "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",
-                                                         "maxLength" : 20,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "log" : {
-                                                         "description" : "Log level for firewall rule.",
-                                                         "enum" : [
-                                                            "emerg",
-                                                            "alert",
-                                                            "crit",
-                                                            "err",
-                                                            "warning",
-                                                            "notice",
-                                                            "info",
-                                                            "debug",
-                                                            "nolog"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "macro" : {
-                                                         "description" : "Use predefined standard macro.",
-                                                         "maxLength" : 128,
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "moveto" : {
-                                                         "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "type" : "integer",
-                                                         "typetext" : "<integer> (0 - N)"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "type" : "integer",
-                                                         "typetext" : "<integer> (0 - N)"
-                                                      },
-                                                      "proto" : {
-                                                         "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                                         "format" : "pve-fw-protocol-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "sport" : {
-                                                         "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                         "format" : "pve-fw-sport-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "type" : {
-                                                         "description" : "Rule type.",
-                                                         "enum" : [
-                                                            "in",
-                                                            "out",
-                                                            "group"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}",
-                                          "text" : "{pos}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List rules.",
-                                          "method" : "GET",
-                                          "name" : "get_rules",
-                                          "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" : null,
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "pos" : {
-                                                      "type" : "integer"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{pos}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create new rule.",
-                                          "method" : "POST",
-                                          "name" : "create_rule",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "action" : {
-                                                   "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 2,
-                                                   "optional" : 0,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "comment" : {
-                                                   "description" : "Descriptive comment.",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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>"
-                                                },
-                                                "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>"
-                                                },
-                                                "dport" : {
-                                                   "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                   "format" : "pve-fw-dport-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "enable" : {
-                                                   "description" : "Flag to enable/disable a rule.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "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",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 2,
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "log" : {
-                                                   "description" : "Log level for firewall rule.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macro" : {
-                                                   "description" : "Use predefined standard macro.",
-                                                   "maxLength" : 128,
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "pos" : {
-                                                   "description" : "Update rule at position <pos>.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (0 - N)"
-                                                },
-                                                "proto" : {
-                                                   "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                                   "format" : "pve-fw-protocol-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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>"
-                                                },
-                                                "sport" : {
-                                                   "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                   "format" : "pve-fw-sport-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "type" : {
-                                                   "description" : "Rule type.",
-                                                   "enum" : [
-                                                      "in",
-                                                      "out",
-                                                      "group"
-                                                   ],
-                                                   "optional" : 0,
-                                                   "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : null,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules",
-                                    "text" : "rules"
-                                 },
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Remove IP or Network alias.",
-                                                "method" : "DELETE",
-                                                "name" : "remove_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "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>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Read alias.",
-                                                "method" : "GET",
-                                                "name" : "read_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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"
-                                                      ]
-                                                   ]
-                                                },
-                                                "returns" : {
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Update IP or Network alias.",
-                                                "method" : "PUT",
-                                                "name" : "update_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "cidr" : {
-                                                         "description" : "Network/IP specification in CIDR format.",
-                                                         "format" : "IPorCIDR",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "rename" : {
-                                                         "description" : "Rename an existing alias.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}",
-                                          "text" : "{name}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List aliases",
-                                          "method" : "GET",
-                                          "name" : "get_aliases",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "cidr" : {
-                                                      "type" : "string"
-                                                   },
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
-                                                      "optional" : 0,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{name}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create IP or Network Alias.",
-                                          "method" : "POST",
-                                          "name" : "create_alias",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "cidr" : {
-                                                   "description" : "Network/IP specification in CIDR format.",
-                                                   "format" : "IPorCIDR",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "comment" : {
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "name" : {
-                                                   "description" : "Alias name.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases",
-                                    "text" : "aliases"
-                                 },
-                                 {
-                                    "children" : [
-                                       {
-                                          "children" : [
-                                             {
-                                                "info" : {
-                                                   "DELETE" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Remove IP or Network from IPSet.",
-                                                      "method" : "DELETE",
-                                                      "name" : "remove_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "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>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "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.Config.Network"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "null"
-                                                      }
-                                                   },
-                                                   "GET" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Read IP or Network settings from IPSet.",
-                                                      "method" : "GET",
-                                                      "name" : "read_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "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"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "object"
-                                                      }
-                                                   },
-                                                   "PUT" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Update IP or Network settings",
-                                                      "method" : "PUT",
-                                                      "name" : "update_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "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>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "node" : {
-                                                               "description" : "The cluster node name.",
-                                                               "format" : "pve-node",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "nomatch" : {
-                                                               "optional" : 1,
-                                                               "type" : "boolean",
-                                                               "typetext" : "<boolean>"
-                                                            },
-                                                            "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.Config.Network"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "null"
-                                                      }
-                                                   }
-                                                },
-                                                "leaf" : 1,
-                                                "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}",
-                                                "text" : "{cidr}"
-                                             }
-                                          ],
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Delete IPSet",
-                                                "method" : "DELETE",
-                                                "name" : "delete_ipset",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "force" : {
-                                                         "description" : "Delete all members of the IPSet, if there are any.",
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "List IPSet content",
-                                                "method" : "GET",
-                                                "name" : "get_ipset",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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"
-                                                      ]
-                                                   ]
-                                                },
-                                                "returns" : {
-                                                   "items" : {
-                                                      "properties" : {
-                                                         "cidr" : {
-                                                            "type" : "string"
-                                                         },
-                                                         "comment" : {
-                                                            "optional" : 1,
-                                                            "type" : "string"
-                                                         },
-                                                         "digest" : {
-                                                            "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                            "maxLength" : 40,
-                                                            "optional" : 0,
-                                                            "type" : "string"
-                                                         },
-                                                         "nomatch" : {
-                                                            "optional" : 1,
-                                                            "type" : "boolean"
-                                                         }
-                                                      },
-                                                      "type" : "object"
-                                                   },
-                                                   "links" : [
-                                                      {
-                                                         "href" : "{cidr}",
-                                                         "rel" : "child"
-                                                      }
-                                                   ],
-                                                   "type" : "array"
-                                                }
-                                             },
-                                             "POST" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Add IP or Network to IPSet.",
-                                                "method" : "POST",
-                                                "name" : "create_ip",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "cidr" : {
-                                                         "description" : "Network/IP specification in CIDR format.",
-                                                         "format" : "IPorCIDRorAlias",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "comment" : {
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "nomatch" : {
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 0,
-                                          "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}",
-                                          "text" : "{name}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List IPSets",
-                                          "method" : "GET",
-                                          "name" : "ipset_index",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
-                                                      "optional" : 0,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "description" : "IP set name.",
-                                                      "maxLength" : 64,
-                                                      "minLength" : 2,
-                                                      "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{name}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create new IPSet",
-                                          "method" : "POST",
-                                          "name" : "create_ipset",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "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>"
-                                                },
-                                                "name" : {
-                                                   "description" : "IP set name.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "rename" : {
-                                                   "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "optional" : 1,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset",
-                                    "text" : "ipset"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get VM firewall options.",
-                                          "method" : "GET",
-                                          "name" : "get_options",
-                                          "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" : {
-                                             "properties" : {
-                                                "dhcp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable DHCP.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "enable" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable/disable firewall rules.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ipfilter" : {
-                                                   "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "log_level_in" : {
-                                                   "description" : "Log level for incoming traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "log_level_out" : {
-                                                   "description" : "Log level for outgoing traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macfilter" : {
-                                                   "default" : 1,
-                                                   "description" : "Enable/disable MAC address filter.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ndp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "policy_in" : {
-                                                   "description" : "Input policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "policy_out" : {
-                                                   "description" : "Output policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "radv" : {
-                                                   "description" : "Allow sending Router Advertisement.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       },
-                                       "PUT" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Set Firewall options.",
-                                          "method" : "PUT",
-                                          "name" : "set_options",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "delete" : {
-                                                   "description" : "A list of settings you want to delete.",
-                                                   "format" : "pve-configid-list",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "dhcp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable DHCP.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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>"
-                                                },
-                                                "enable" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable/disable firewall rules.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "ipfilter" : {
-                                                   "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "log_level_in" : {
-                                                   "description" : "Log level for incoming traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "log_level_out" : {
-                                                   "description" : "Log level for outgoing traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macfilter" : {
-                                                   "default" : 1,
-                                                   "description" : "Enable/disable MAC address filter.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "ndp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "policy_in" : {
-                                                   "description" : "Input policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "policy_out" : {
-                                                   "description" : "Output policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "radv" : {
-                                                   "description" : "Allow sending Router Advertisement.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/options",
-                                    "text" : "options"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Read firewall log",
-                                          "method" : "GET",
-                                          "name" : "log",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "limit" : {
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (0 - N)"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "start" : {
-                                                   "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.Console"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "n" : {
-                                                      "description" : "Line number",
-                                                      "type" : "integer"
-                                                   },
-                                                   "t" : {
-                                                      "description" : "Line text",
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/log",
-                                    "text" : "log"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
-                                          "method" : "GET",
-                                          "name" : "refs",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "type" : {
-                                                   "description" : "Only list references of specified type.",
-                                                   "enum" : [
-                                                      "alias",
-                                                      "ipset"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "type" : "string"
-                                                   },
-                                                   "type" : {
-                                                      "enum" : [
-                                                         "alias",
-                                                         "ipset"
-                                                      ],
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/firewall/refs",
-                                    "text" : "refs"
-                                 }
-                              ],
-                              "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>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "user" : "all"
-                                    },
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/firewall",
-                              "text" : "firewall"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute fsfreeze-freeze.",
-                                          "method" : "POST",
-                                          "name" : "fsfreeze-freeze",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-freeze",
-                                    "text" : "fsfreeze-freeze"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute fsfreeze-status.",
-                                          "method" : "POST",
-                                          "name" : "fsfreeze-status",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-status",
-                                    "text" : "fsfreeze-status"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute fsfreeze-thaw.",
-                                          "method" : "POST",
-                                          "name" : "fsfreeze-thaw",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-thaw",
-                                    "text" : "fsfreeze-thaw"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute fstrim.",
-                                          "method" : "POST",
-                                          "name" : "fstrim",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/fstrim",
-                                    "text" : "fstrim"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-fsinfo.",
-                                          "method" : "GET",
-                                          "name" : "get-fsinfo",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-fsinfo",
-                                    "text" : "get-fsinfo"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-host-name.",
-                                          "method" : "GET",
-                                          "name" : "get-host-name",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-host-name",
-                                    "text" : "get-host-name"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-memory-block-info.",
-                                          "method" : "GET",
-                                          "name" : "get-memory-block-info",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-block-info",
-                                    "text" : "get-memory-block-info"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-memory-blocks.",
-                                          "method" : "GET",
-                                          "name" : "get-memory-blocks",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-blocks",
-                                    "text" : "get-memory-blocks"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-osinfo.",
-                                          "method" : "GET",
-                                          "name" : "get-osinfo",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-osinfo",
-                                    "text" : "get-osinfo"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-time.",
-                                          "method" : "GET",
-                                          "name" : "get-time",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-time",
-                                    "text" : "get-time"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-timezone.",
-                                          "method" : "GET",
-                                          "name" : "get-timezone",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-timezone",
-                                    "text" : "get-timezone"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-users.",
-                                          "method" : "GET",
-                                          "name" : "get-users",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-users",
-                                    "text" : "get-users"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute get-vcpus.",
-                                          "method" : "GET",
-                                          "name" : "get-vcpus",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/get-vcpus",
-                                    "text" : "get-vcpus"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute info.",
-                                          "method" : "GET",
-                                          "name" : "info",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/info",
-                                    "text" : "info"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute network-get-interfaces.",
-                                          "method" : "GET",
-                                          "name" : "network-get-interfaces",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/network-get-interfaces",
-                                    "text" : "network-get-interfaces"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute ping.",
-                                          "method" : "POST",
-                                          "name" : "ping",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/ping",
-                                    "text" : "ping"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute shutdown.",
-                                          "method" : "POST",
-                                          "name" : "shutdown",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/shutdown",
-                                    "text" : "shutdown"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute suspend-disk.",
-                                          "method" : "POST",
-                                          "name" : "suspend-disk",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-disk",
-                                    "text" : "suspend-disk"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute suspend-hybrid.",
-                                          "method" : "POST",
-                                          "name" : "suspend-hybrid",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-hybrid",
-                                    "text" : "suspend-hybrid"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Execute suspend-ram.",
-                                          "method" : "POST",
-                                          "name" : "suspend-ram",
-                                          "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-ram",
-                                    "text" : "suspend-ram"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Sets the password for the given user to the given password",
-                                          "method" : "POST",
-                                          "name" : "set-user-password",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "crypted" : {
-                                                   "default" : 0,
-                                                   "description" : "set to 1 if the password has already been passed through crypt()",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "password" : {
-                                                   "description" : "The new password.",
-                                                   "maxLength" : 1024,
-                                                   "minLength" : 5,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "username" : {
-                                                   "description" : "The user to set the password for.",
-                                                   "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a single `result` property.",
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/set-user-password",
-                                    "text" : "set-user-password"
-                                 },
-                                 {
-                                    "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",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "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>"
-                                                },
-                                                "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "properties" : {
-                                                "pid" : {
-                                                   "description" : "The PID of the process started by the guest-agent.",
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/exec",
-                                    "text" : "exec"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Gets the status of the given pid started by the guest-agent",
-                                          "method" : "GET",
-                                          "name" : "exec-status",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "pid" : {
-                                                   "description" : "The PID to query",
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer>"
-                                                },
-                                                "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "properties" : {
-                                                "err-data" : {
-                                                   "description" : "stderr of the process",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "err-truncated" : {
-                                                   "description" : "true if stderr was not fully captured",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "exitcode" : {
-                                                   "description" : "process exit code if it was normally terminated.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "exited" : {
-                                                   "description" : "Tells if the given command has exited yet.",
-                                                   "type" : "boolean"
-                                                },
-                                                "out-data" : {
-                                                   "description" : "stdout of the process",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "out-truncated" : {
-                                                   "description" : "true if stdout was not fully captured",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "signal" : {
-                                                   "description" : "signal number or exception code if the process was abnormally terminated.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/exec-status",
-                                    "text" : "exec-status"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Reads the given file via guest agent. Is limited to 16777216 bytes.",
-                                          "method" : "GET",
-                                          "name" : "file-read",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "file" : {
-                                                   "description" : "The path to the file",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "Returns an object with a `content` property.",
-                                             "properties" : {
-                                                "content" : {
-                                                   "description" : "The content of the file, maximum 16777216",
-                                                   "type" : "string"
-                                                },
-                                                "truncated" : {
-                                                   "description" : "If set to 1, the output is truncated and not complete",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/file-read",
-                                    "text" : "file-read"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Writes the given file via guest agent.",
-                                          "method" : "POST",
-                                          "name" : "file-write",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "content" : {
-                                                   "description" : "The content to write into the file.",
-                                                   "maxLength" : 61440,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "encode" : {
-                                                   "default" : 1,
-                                                   "description" : "If set, the content will be encoded as base64 (required by QEMU).Otherwise the content needs to be encoded beforehand - defaults to true.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "file" : {
-                                                   "description" : "The path to the file.",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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.Monitor"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/agent/file-write",
-                                    "text" : "file-write"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Qemu Agent command index.",
-                                    "method" : "GET",
-                                    "name" : "index",
-                                    "parameters" : {
-                                       "additionalProperties" : 1,
-                                       "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" : {
-                                       "user" : "all"
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "Returns the list of Qemu Agent commands",
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Execute Qemu Guest Agent commands.",
-                                    "method" : "POST",
-                                    "name" : "agent",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "command" : {
-                                             "description" : "The QGA command.",
-                                             "enum" : [
-                                                "fsfreeze-freeze",
-                                                "fsfreeze-status",
-                                                "fsfreeze-thaw",
-                                                "fstrim",
-                                                "get-fsinfo",
-                                                "get-host-name",
-                                                "get-memory-block-info",
-                                                "get-memory-blocks",
-                                                "get-osinfo",
-                                                "get-time",
-                                                "get-timezone",
-                                                "get-users",
-                                                "get-vcpus",
-                                                "info",
-                                                "network-get-interfaces",
-                                                "ping",
-                                                "shutdown",
-                                                "suspend-disk",
-                                                "suspend-hybrid",
-                                                "suspend-ram"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "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.Monitor"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "Returns an object with a single `result` property.",
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/agent",
-                              "text" : "agent"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read VM RRD statistics (returns PNG)",
-                                    "method" : "GET",
-                                    "name" : "rrd",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ds" : {
-                                             "description" : "The list of datasources you want to display.",
-                                             "format" : "pve-configid-list",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "properties" : {
-                                          "filename" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/rrd",
-                              "text" : "rrd"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read VM RRD statistics",
-                                    "method" : "GET",
-                                    "name" : "rrddata",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/rrddata",
-                              "text" : "rrddata"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "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" : {
-                                       "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",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapshot" : {
-                                             "description" : "Fetch config values from given snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "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.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "The VM configuration.",
-                                       "properties" : {
-                                          "acpi" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable ACPI.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "affinity" : {
-                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
-                                             "format" : "pve-cpuset",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
-                                             "format" : {
-                                                "enabled" : {
-                                                   "default" : 0,
-                                                   "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
-                                                   "type" : "boolean"
-                                                },
-                                                "fstrim_cloned_disks" : {
-                                                   "default" : 0,
-                                                   "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"
-                                          },
-                                          "arch" : {
-                                             "description" : "Virtual processor architecture. Defaults to the host.",
-                                             "enum" : [
-                                                "x86_64",
-                                                "aarch64"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "args" : {
-                                             "description" : "Arbitrary arguments passed to kvm.",
-                                             "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).",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "bios" : {
-                                             "default" : "seabios",
-                                             "description" : "Select BIOS implementation.",
-                                             "enum" : [
-                                                "seabios",
-                                                "ovmf"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "boot" : {
-                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
-                                             "format" : "pve-qm-boot",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "bootdisk" : {
-                                             "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+",
-                                             "type" : "string"
-                                          },
-                                          "cdrom" : {
-                                             "description" : "This is an alias for option -ide2",
-                                             "format" : "pve-qm-ide",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<volume>"
-                                          },
-                                          "cicustom" : {
-                                             "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
-                                             "format" : "pve-qm-cicustom",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "cipassword" : {
-                                             "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "citype" : {
-                                             "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",
-                                                "opennebula"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ciuser" : {
-                                             "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "cores" : {
-                                             "default" : 1,
-                                             "description" : "The number of cores per socket.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "cpu" : {
-                                             "description" : "Emulated CPU type.",
-                                             "format" : "pve-vm-cpu-conf",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "cpulimit" : {
-                                             "default" : 0,
-                                             "description" : "Limit of CPU usage.",
-                                             "maximum" : 128,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
-                                          },
-                                          "cpuunits" : {
-                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
-                                             "maximum" : 262144,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "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. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
-                                             "maxLength" : 8192,
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "digest" : {
-                                             "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.",
-                                             "type" : "string"
-                                          },
-                                          "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars.",
-                                             "format" : {
-                                                "efitype" : {
-                                                   "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
-                                                   "enum" : [
-                                                      "2m",
-                                                      "4m"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "pre-enrolled-keys" : {
-                                                   "default" : 0,
-                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "freeze" : {
-                                             "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "hookscript" : {
-                                             "description" : "Script that will be executed during various steps in the vms lifetime.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "hostpci[n]" : {
-                                             "description" : "Map host PCI devices into guest.",
-                                             "format" : "pve-qm-hostpci",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "hotplug" : {
-                                             "default" : "network,disk,usb",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
-                                             "format" : "pve-hotplug-features",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "hugepages" : {
-                                             "description" : "Enable/disable hugepages memory.",
-                                             "enum" : [
-                                                "any",
-                                                "2",
-                                                "1024"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ide[n]" : {
-                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "model" : {
-                                                   "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "model",
-                                                   "maxLength" : 120,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "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\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"
-                                          },
-                                          "ivshmem" : {
-                                             "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
-                                             "format" : {
-                                                "name" : {
-                                                   "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
-                                                   "format_description" : "string",
-                                                   "optional" : 1,
-                                                   "pattern" : "[a-zA-Z0-9\\-]+",
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "The size of the file in MB.",
-                                                   "minimum" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
-                                             "enum" : [
-                                                "de",
-                                                "de-ch",
-                                                "da",
-                                                "en-gb",
-                                                "en-us",
-                                                "es",
-                                                "fi",
-                                                "fr",
-                                                "fr-be",
-                                                "fr-ca",
-                                                "fr-ch",
-                                                "hu",
-                                                "is",
-                                                "it",
-                                                "ja",
-                                                "lt",
-                                                "mk",
-                                                "nl",
-                                                "no",
-                                                "pl",
-                                                "pt",
-                                                "pt-br",
-                                                "sv",
-                                                "sl",
-                                                "tr"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "kvm" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable KVM hardware virtualization.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "localtime" : {
-                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "lock" : {
-                                             "description" : "Lock/unlock the VM.",
-                                             "enum" : [
-                                                "backup",
-                                                "clone",
-                                                "create",
-                                                "migrate",
-                                                "rollback",
-                                                "snapshot",
-                                                "snapshot-delete",
-                                                "suspending",
-                                                "suspended"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "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" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "migrate_downtime" : {
-                                             "default" : 0.1,
-                                             "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number"
-                                          },
-                                          "migrate_speed" : {
-                                             "default" : 0,
-                                             "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "name" : {
-                                             "description" : "Set a name for the VM. Only used on the configuration web interface.",
-                                             "format" : "dns-name",
-                                             "optional" : 1,
-                                             "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.",
-                                             "format" : "address-list",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "net[n]" : {
-                                             "description" : "Specify network devices.",
-                                             "format" : {
-                                                "bridge" : {
-                                                   "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" : "pve-bridge-id",
-                                                   "format_description" : "bridge",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "e1000" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82540em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82544gc" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82545em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000e" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "firewall" : {
-                                                   "description" : "Whether this interface should be protected by the firewall.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "i82551" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82557b" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82559er" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "link_down" : {
-                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "macaddr" : {
-                                                   "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
-                                                   "format" : "mac-addr",
-                                                   "format_description" : "XX:XX:XX:XX:XX:XX",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                                },
-                                                "model" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
-                                                   "enum" : [
-                                                      "e1000",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em",
-                                                      "e1000e",
-                                                      "i82551",
-                                                      "i82557b",
-                                                      "i82559er",
-                                                      "ne2k_isa",
-                                                      "ne2k_pci",
-                                                      "pcnet",
-                                                      "rtl8139",
-                                                      "virtio",
-                                                      "vmxnet3"
-                                                   ],
-                                                   "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"
-                                                },
-                                                "ne2k_pci" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "pcnet" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 64,
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "rate" : {
-                                                   "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "rtl8139" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "tag" : {
-                                                   "description" : "VLAN tag to apply to packets on this interface.",
-                                                   "maximum" : 4094,
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "trunks" : {
-                                                   "description" : "VLAN trunks to pass through this interface.",
-                                                   "format_description" : "vlanid[;vlanid...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "virtio" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "vmxnet3" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "numa" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable NUMA.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "numa[n]" : {
-                                             "description" : "NUMA topology.",
-                                             "format" : {
-                                                "cpus" : {
-                                                   "description" : "CPUs accessing this NUMA node.",
-                                                   "format_description" : "id[-id];...",
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "hostnodes" : {
-                                                   "description" : "Host NUMA nodes to use.",
-                                                   "format_description" : "id[-id];...",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "memory" : {
-                                                   "description" : "Amount of memory this NUMA node provides.",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "policy" : {
-                                                   "description" : "NUMA allocation policy.",
-                                                   "enum" : [
-                                                      "preferred",
-                                                      "bind",
-                                                      "interleave"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "onboot" : {
-                                             "default" : 0,
-                                             "description" : "Specifies whether a VM will be started during system bootup.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "ostype" : {
-                                             "description" : "Specify guest operating system.",
-                                             "enum" : [
-                                                "other",
-                                                "wxp",
-                                                "w2k",
-                                                "w2k3",
-                                                "w2k8",
-                                                "wvista",
-                                                "win7",
-                                                "win8",
-                                                "win10",
-                                                "win11",
-                                                "l24",
-                                                "l26",
-                                                "solaris"
-                                             ],
-                                             "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "protection" : {
-                                             "default" : 0,
-                                             "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "reboot" : {
-                                             "default" : 1,
-                                             "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "rng0" : {
-                                             "description" : "Configure a VirtIO-based Random Number Generator.",
-                                             "format" : {
-                                                "max_bytes" : {
-                                                   "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "period" : {
-                                                   "default" : 1000,
-                                                   "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "source" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
-                                                   "enum" : [
-                                                      "/dev/urandom",
-                                                      "/dev/random",
-                                                      "/dev/hwrng"
-                                                   ],
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "sata[n]" : {
-                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "scsi[n]" : {
-                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of queues.",
-                                                   "minimum" : 2,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "scsiblock" : {
-                                                   "default" : 0,
-                                                   "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "scsihw" : {
-                                             "default" : "lsi",
-                                             "description" : "SCSI controller model",
-                                             "enum" : [
-                                                "lsi",
-                                                "lsi53c810",
-                                                "virtio-scsi-pci",
-                                                "virtio-scsi-single",
-                                                "megasas",
-                                                "pvscsi"
-                                             ],
-                                             "optional" : 1,
-                                             "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.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "serial[n]" : {
-                                             "description" : "Create a serial device inside the VM (n is 0 to 3)",
-                                             "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "shares" : {
-                                             "default" : 1000,
-                                             "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
-                                             "maximum" : 50000,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "smbios1" : {
-                                             "description" : "Specify SMBIOS type 1 fields.",
-                                             "format" : "pve-qm-smbios1",
-                                             "maxLength" : 512,
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "smp" : {
-                                             "default" : 1,
-                                             "description" : "The number of CPUs. Please use option -sockets instead.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "sockets" : {
-                                             "default" : 1,
-                                             "description" : "The number of CPU sockets.",
-                                             "minimum" : 1,
-                                             "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",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "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'.",
-                                             "optional" : 1,
-                                             "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
-                                             "type" : "string",
-                                             "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
-                                          },
-                                          "startup" : {
-                                             "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                             "format" : "pve-startup-order",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                                          },
-                                          "tablet" : {
-                                             "default" : 1,
-                                             "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 (`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,
-                                             "description" : "Enable/disable time drift fix.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "template" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable Template.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'.",
-                                             "format" : {
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "version" : {
-                                                   "default" : "v2.0",
-                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
-                                                   "enum" : [
-                                                      "v1.2",
-                                                      "v2.0"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "unused[n]" : {
-                                             "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                             "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"
-                                          },
-                                          "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
-                                             "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "vcpus" : {
-                                             "default" : 0,
-                                             "description" : "Number of hotplugged vcpus.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "vga" : {
-                                             "description" : "Configure the VGA hardware.",
-                                             "format" : {
-                                                "memory" : {
-                                                   "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
-                                                   "maximum" : 512,
-                                                   "minimum" : 4,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "type" : {
-                                                   "default" : "std",
-                                                   "default_key" : 1,
-                                                   "description" : "Select the VGA type.",
-                                                   "enum" : [
-                                                      "cirrus",
-                                                      "qxl",
-                                                      "qxl2",
-                                                      "qxl3",
-                                                      "qxl4",
-                                                      "none",
-                                                      "serial0",
-                                                      "serial1",
-                                                      "serial2",
-                                                      "serial3",
-                                                      "std",
-                                                      "virtio",
-                                                      "virtio-gl",
-                                                      "vmware"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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).",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "vmgenid" : {
-                                             "default" : "1 (autogenerated)",
-                                             "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
-                                             "format_description" : "UUID",
-                                             "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 through API/CLI create or update methods, but not when manually editing the config file."
-                                          },
-                                          "vmstatestorage" : {
-                                             "description" : "Default storage for VM state volumes/files.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "watchdog" : {
-                                             "description" : "Create a virtual hardware watchdog device.",
-                                             "format" : "pve-qm-watchdog",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Set virtual machine options (asynchrounous API).",
-                                    "method" : "POST",
-                                    "name" : "update_vm_async",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "acpi" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable ACPI.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "affinity" : {
-                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
-                                             "format" : "pve-cpuset",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
-                                             "format" : {
-                                                "enabled" : {
-                                                   "default" : 0,
-                                                   "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
-                                                   "type" : "boolean"
-                                                },
-                                                "fstrim_cloned_disks" : {
-                                                   "default" : 0,
-                                                   "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>] [,type=<virtio|isa>]"
-                                          },
-                                          "arch" : {
-                                             "description" : "Virtual processor architecture. Defaults to the host.",
-                                             "enum" : [
-                                                "x86_64",
-                                                "aarch64"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "args" : {
-                                             "description" : "Arbitrary arguments passed to kvm.",
-                                             "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).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "background_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)"
-                                          },
-                                          "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "bios" : {
-                                             "default" : "seabios",
-                                             "description" : "Select BIOS implementation.",
-                                             "enum" : [
-                                                "seabios",
-                                                "ovmf"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "boot" : {
-                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
-                                             "format" : "pve-qm-boot",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
-                                          },
-                                          "bootdisk" : {
-                                             "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+",
-                                             "type" : "string"
-                                          },
-                                          "cdrom" : {
-                                             "description" : "This is an alias for option -ide2",
-                                             "format" : "pve-qm-ide",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<volume>"
-                                          },
-                                          "cicustom" : {
-                                             "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
-                                             "format" : "pve-qm-cicustom",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
-                                          },
-                                          "cipassword" : {
-                                             "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "citype" : {
-                                             "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",
-                                                "opennebula"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ciuser" : {
-                                             "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "cores" : {
-                                             "default" : 1,
-                                             "description" : "The number of cores per socket.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "cpu" : {
-                                             "description" : "Emulated CPU type.",
-                                             "format" : "pve-vm-cpu-conf",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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,
-                                             "description" : "Limit of CPU usage.",
-                                             "maximum" : 128,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - 128)",
-                                             "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
-                                          },
-                                          "cpuunits" : {
-                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
-                                             "maximum" : 262144,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 262144)",
-                                             "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."
-                                          },
-                                          "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 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>"
-                                          },
-                                          "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>"
-                                          },
-                                          "efidisk0" : {
-                                             "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "efitype" : {
-                                                   "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
-                                                   "enum" : [
-                                                      "2m",
-                                                      "4m"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "pre-enrolled-keys" : {
-                                                   "default" : 0,
-                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
-                                          },
-                                          "force" : {
-                                             "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
-                                             "optional" : 1,
-                                             "requires" : "delete",
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "freeze" : {
-                                             "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "hookscript" : {
-                                             "description" : "Script that will be executed during various steps in the vms lifetime.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hostpci[n]" : {
-                                             "description" : "Map host PCI devices into guest.",
-                                             "format" : "pve-qm-hostpci",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
-                                             "format" : "pve-hotplug-features",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hugepages" : {
-                                             "description" : "Enable/disable hugepages memory.",
-                                             "enum" : [
-                                                "any",
-                                                "2",
-                                                "1024"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ide[n]" : {
-                                             "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "model" : {
-                                                   "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "model",
-                                                   "maxLength" : 120,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
-                                             "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
-                                          },
-                                          "ivshmem" : {
-                                             "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
-                                             "format" : {
-                                                "name" : {
-                                                   "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
-                                                   "format_description" : "string",
-                                                   "optional" : 1,
-                                                   "pattern" : "[a-zA-Z0-9\\-]+",
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "The size of the file in MB.",
-                                                   "minimum" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
-                                             "enum" : [
-                                                "de",
-                                                "de-ch",
-                                                "da",
-                                                "en-gb",
-                                                "en-us",
-                                                "es",
-                                                "fi",
-                                                "fr",
-                                                "fr-be",
-                                                "fr-ca",
-                                                "fr-ch",
-                                                "hu",
-                                                "is",
-                                                "it",
-                                                "ja",
-                                                "lt",
-                                                "mk",
-                                                "nl",
-                                                "no",
-                                                "pl",
-                                                "pt",
-                                                "pt-br",
-                                                "sv",
-                                                "sl",
-                                                "tr"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "kvm" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable KVM hardware virtualization.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "localtime" : {
-                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "lock" : {
-                                             "description" : "Lock/unlock the VM.",
-                                             "enum" : [
-                                                "backup",
-                                                "clone",
-                                                "create",
-                                                "migrate",
-                                                "rollback",
-                                                "snapshot",
-                                                "snapshot-delete",
-                                                "suspending",
-                                                "suspended"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "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" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - N)"
-                                          },
-                                          "migrate_downtime" : {
-                                             "default" : 0.1,
-                                             "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "migrate_speed" : {
-                                             "default" : 0,
-                                             "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "name" : {
-                                             "description" : "Set a name for the VM. Only used on the configuration web interface.",
-                                             "format" : "dns-name",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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.",
-                                             "format" : "address-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "net[n]" : {
-                                             "description" : "Specify network devices.",
-                                             "format" : {
-                                                "bridge" : {
-                                                   "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" : "pve-bridge-id",
-                                                   "format_description" : "bridge",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "e1000" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82540em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82544gc" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82545em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000e" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "firewall" : {
-                                                   "description" : "Whether this interface should be protected by the firewall.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "i82551" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82557b" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82559er" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "link_down" : {
-                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "macaddr" : {
-                                                   "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
-                                                   "format" : "mac-addr",
-                                                   "format_description" : "XX:XX:XX:XX:XX:XX",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                                },
-                                                "model" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
-                                                   "enum" : [
-                                                      "e1000",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em",
-                                                      "e1000e",
-                                                      "i82551",
-                                                      "i82557b",
-                                                      "i82559er",
-                                                      "ne2k_isa",
-                                                      "ne2k_pci",
-                                                      "pcnet",
-                                                      "rtl8139",
-                                                      "virtio",
-                                                      "vmxnet3"
-                                                   ],
-                                                   "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"
-                                                },
-                                                "ne2k_pci" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "pcnet" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 64,
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "rate" : {
-                                                   "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "rtl8139" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "tag" : {
-                                                   "description" : "VLAN tag to apply to packets on this interface.",
-                                                   "maximum" : 4094,
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "trunks" : {
-                                                   "description" : "VLAN trunks to pass through this interface.",
-                                                   "format_description" : "vlanid[;vlanid...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "virtio" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "vmxnet3" : {
-                                                   "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "numa" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable NUMA.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "numa[n]" : {
-                                             "description" : "NUMA topology.",
-                                             "format" : {
-                                                "cpus" : {
-                                                   "description" : "CPUs accessing this NUMA node.",
-                                                   "format_description" : "id[-id];...",
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "hostnodes" : {
-                                                   "description" : "Host NUMA nodes to use.",
-                                                   "format_description" : "id[-id];...",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "memory" : {
-                                                   "description" : "Amount of memory this NUMA node provides.",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "policy" : {
-                                                   "description" : "NUMA allocation policy.",
-                                                   "enum" : [
-                                                      "preferred",
-                                                      "bind",
-                                                      "interleave"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
-                                          },
-                                          "onboot" : {
-                                             "default" : 0,
-                                             "description" : "Specifies whether a VM will be started during system bootup.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "ostype" : {
-                                             "description" : "Specify guest operating system.",
-                                             "enum" : [
-                                                "other",
-                                                "wxp",
-                                                "w2k",
-                                                "w2k3",
-                                                "w2k8",
-                                                "wvista",
-                                                "win7",
-                                                "win8",
-                                                "win10",
-                                                "win11",
-                                                "l24",
-                                                "l26",
-                                                "solaris"
-                                             ],
-                                             "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "protection" : {
-                                             "default" : 0,
-                                             "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "reboot" : {
-                                             "default" : 1,
-                                             "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "revert" : {
-                                             "description" : "Revert a pending change.",
-                                             "format" : "pve-configid-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "rng0" : {
-                                             "description" : "Configure a VirtIO-based Random Number Generator.",
-                                             "format" : {
-                                                "max_bytes" : {
-                                                   "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of queues.",
-                                                   "minimum" : 2,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "scsiblock" : {
-                                                   "default" : 0,
-                                                   "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
-                                             "description" : "SCSI controller model",
-                                             "enum" : [
-                                                "lsi",
-                                                "lsi53c810",
-                                                "virtio-scsi-pci",
-                                                "virtio-scsi-single",
-                                                "megasas",
-                                                "pvscsi"
-                                             ],
-                                             "optional" : 1,
-                                             "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.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "serial[n]" : {
-                                             "description" : "Create a serial device inside the VM (n is 0 to 3)",
-                                             "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "shares" : {
-                                             "default" : 1000,
-                                             "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
-                                             "maximum" : 50000,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - 50000)"
-                                          },
-                                          "skiplock" : {
-                                             "description" : "Ignore locks - only root is allowed to use this option.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "smbios1" : {
-                                             "description" : "Specify SMBIOS type 1 fields.",
-                                             "format" : "pve-qm-smbios1",
-                                             "maxLength" : 512,
-                                             "optional" : 1,
-                                             "type" : "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,
-                                             "description" : "The number of CPUs. Please use option -sockets instead.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "sockets" : {
-                                             "default" : 1,
-                                             "description" : "The number of CPU sockets.",
-                                             "minimum" : 1,
-                                             "optional" : 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",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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'.",
-                                             "optional" : 1,
-                                             "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
-                                             "type" : "string",
-                                             "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
-                                          },
-                                          "startup" : {
-                                             "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                             "format" : "pve-startup-order",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                                          },
-                                          "tablet" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable the USB tablet device.",
-                                             "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 (`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,
-                                             "description" : "Enable/disable time drift fix.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "template" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable Template.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "version" : {
-                                                   "default" : "v2.0",
-                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
-                                                   "enum" : [
-                                                      "v1.2",
-                                                      "v2.0"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
-                                          },
-                                          "unused[n]" : {
-                                             "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                             "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" : "[file=]<volume>"
-                                          },
-                                          "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
-                                             "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
-                                          },
-                                          "vcpus" : {
-                                             "default" : 0,
-                                             "description" : "Number of hotplugged vcpus.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vga" : {
-                                             "description" : "Configure the VGA hardware.",
-                                             "format" : {
-                                                "memory" : {
-                                                   "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
-                                                   "maximum" : 512,
-                                                   "minimum" : 4,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "type" : {
-                                                   "default" : "std",
-                                                   "default_key" : 1,
-                                                   "description" : "Select the VGA type.",
-                                                   "enum" : [
-                                                      "cirrus",
-                                                      "qxl",
-                                                      "qxl2",
-                                                      "qxl3",
-                                                      "qxl4",
-                                                      "none",
-                                                      "serial0",
-                                                      "serial1",
-                                                      "serial2",
-                                                      "serial3",
-                                                      "std",
-                                                      "virtio",
-                                                      "virtio-gl",
-                                                      "vmware"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[type=]<enum>] [,memory=<integer>]",
-                                             "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
-                                          },
-                                          "vmgenid" : {
-                                             "default" : "1 (autogenerated)",
-                                             "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
-                                             "format_description" : "UUID",
-                                             "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 through API/CLI create or update methods, but not when manually editing the config file."
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vmstatestorage" : {
-                                             "description" : "Default storage for VM state volumes/files.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "watchdog" : {
-                                             "description" : "Create a virtual hardware watchdog device.",
-                                             "format" : "pve-qm-watchdog",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
-                                             "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Config.Disk",
-                                             "VM.Config.CDROM",
-                                             "VM.Config.CPU",
-                                             "VM.Config.Memory",
-                                             "VM.Config.Network",
-                                             "VM.Config.HWType",
-                                             "VM.Config.Options",
-                                             "VM.Config.Cloudinit"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "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",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "acpi" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable ACPI.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "affinity" : {
-                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
-                                             "format" : "pve-cpuset",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
-                                             "format" : {
-                                                "enabled" : {
-                                                   "default" : 0,
-                                                   "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
-                                                   "type" : "boolean"
-                                                },
-                                                "fstrim_cloned_disks" : {
-                                                   "default" : 0,
-                                                   "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>] [,type=<virtio|isa>]"
-                                          },
-                                          "arch" : {
-                                             "description" : "Virtual processor architecture. Defaults to the host.",
-                                             "enum" : [
-                                                "x86_64",
-                                                "aarch64"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "args" : {
-                                             "description" : "Arbitrary arguments passed to kvm.",
-                                             "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).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "bios" : {
-                                             "default" : "seabios",
-                                             "description" : "Select BIOS implementation.",
-                                             "enum" : [
-                                                "seabios",
-                                                "ovmf"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "boot" : {
-                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
-                                             "format" : "pve-qm-boot",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
-                                          },
-                                          "bootdisk" : {
-                                             "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+",
-                                             "type" : "string"
-                                          },
-                                          "cdrom" : {
-                                             "description" : "This is an alias for option -ide2",
-                                             "format" : "pve-qm-ide",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<volume>"
-                                          },
-                                          "cicustom" : {
-                                             "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
-                                             "format" : "pve-qm-cicustom",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
-                                          },
-                                          "cipassword" : {
-                                             "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "citype" : {
-                                             "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",
-                                                "opennebula"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ciuser" : {
-                                             "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "cores" : {
-                                             "default" : 1,
-                                             "description" : "The number of cores per socket.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "cpu" : {
-                                             "description" : "Emulated CPU type.",
-                                             "format" : "pve-vm-cpu-conf",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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,
-                                             "description" : "Limit of CPU usage.",
-                                             "maximum" : 128,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - 128)",
-                                             "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
-                                          },
-                                          "cpuunits" : {
-                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
-                                             "maximum" : 262144,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 262144)",
-                                             "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."
-                                          },
-                                          "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 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>"
-                                          },
-                                          "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>"
-                                          },
-                                          "efidisk0" : {
-                                             "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "efitype" : {
-                                                   "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
-                                                   "enum" : [
-                                                      "2m",
-                                                      "4m"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "pre-enrolled-keys" : {
-                                                   "default" : 0,
-                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
-                                          },
-                                          "force" : {
-                                             "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
-                                             "optional" : 1,
-                                             "requires" : "delete",
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "freeze" : {
-                                             "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "hookscript" : {
-                                             "description" : "Script that will be executed during various steps in the vms lifetime.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hostpci[n]" : {
-                                             "description" : "Map host PCI devices into guest.",
-                                             "format" : "pve-qm-hostpci",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
-                                             "format" : "pve-hotplug-features",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hugepages" : {
-                                             "description" : "Enable/disable hugepages memory.",
-                                             "enum" : [
-                                                "any",
-                                                "2",
-                                                "1024"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ide[n]" : {
-                                             "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "model" : {
-                                                   "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "model",
-                                                   "maxLength" : 120,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
-                                             "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
-                                          },
-                                          "ivshmem" : {
-                                             "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
-                                             "format" : {
-                                                "name" : {
-                                                   "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
-                                                   "format_description" : "string",
-                                                   "optional" : 1,
-                                                   "pattern" : "[a-zA-Z0-9\\-]+",
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "The size of the file in MB.",
-                                                   "minimum" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
-                                             "enum" : [
-                                                "de",
-                                                "de-ch",
-                                                "da",
-                                                "en-gb",
-                                                "en-us",
-                                                "es",
-                                                "fi",
-                                                "fr",
-                                                "fr-be",
-                                                "fr-ca",
-                                                "fr-ch",
-                                                "hu",
-                                                "is",
-                                                "it",
-                                                "ja",
-                                                "lt",
-                                                "mk",
-                                                "nl",
-                                                "no",
-                                                "pl",
-                                                "pt",
-                                                "pt-br",
-                                                "sv",
-                                                "sl",
-                                                "tr"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "kvm" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable KVM hardware virtualization.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "localtime" : {
-                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "lock" : {
-                                             "description" : "Lock/unlock the VM.",
-                                             "enum" : [
-                                                "backup",
-                                                "clone",
-                                                "create",
-                                                "migrate",
-                                                "rollback",
-                                                "snapshot",
-                                                "snapshot-delete",
-                                                "suspending",
-                                                "suspended"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "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" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - N)"
-                                          },
-                                          "migrate_downtime" : {
-                                             "default" : 0.1,
-                                             "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "migrate_speed" : {
-                                             "default" : 0,
-                                             "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "name" : {
-                                             "description" : "Set a name for the VM. Only used on the configuration web interface.",
-                                             "format" : "dns-name",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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.",
-                                             "format" : "address-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "net[n]" : {
-                                             "description" : "Specify network devices.",
-                                             "format" : {
-                                                "bridge" : {
-                                                   "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" : "pve-bridge-id",
-                                                   "format_description" : "bridge",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "e1000" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82540em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82544gc" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000-82545em" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "e1000e" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "firewall" : {
-                                                   "description" : "Whether this interface should be protected by the firewall.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "i82551" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82557b" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "i82559er" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "link_down" : {
-                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "macaddr" : {
-                                                   "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
-                                                   "format" : "mac-addr",
-                                                   "format_description" : "XX:XX:XX:XX:XX:XX",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                                },
-                                                "model" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
-                                                   "enum" : [
-                                                      "e1000",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em",
-                                                      "e1000e",
-                                                      "i82551",
-                                                      "i82557b",
-                                                      "i82559er",
-                                                      "ne2k_isa",
-                                                      "ne2k_pci",
-                                                      "pcnet",
-                                                      "rtl8139",
-                                                      "virtio",
-                                                      "vmxnet3"
-                                                   ],
-                                                   "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"
-                                                },
-                                                "ne2k_pci" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "pcnet" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 64,
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "rate" : {
-                                                   "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "rtl8139" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "tag" : {
-                                                   "description" : "VLAN tag to apply to packets on this interface.",
-                                                   "maximum" : 4094,
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "trunks" : {
-                                                   "description" : "VLAN trunks to pass through this interface.",
-                                                   "format_description" : "vlanid[;vlanid...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "virtio" : {
-                                                   "alias" : "macaddr",
-                                                   "keyAlias" : "model"
-                                                },
-                                                "vmxnet3" : {
-                                                   "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "numa" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable NUMA.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "numa[n]" : {
-                                             "description" : "NUMA topology.",
-                                             "format" : {
-                                                "cpus" : {
-                                                   "description" : "CPUs accessing this NUMA node.",
-                                                   "format_description" : "id[-id];...",
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "hostnodes" : {
-                                                   "description" : "Host NUMA nodes to use.",
-                                                   "format_description" : "id[-id];...",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                                   "type" : "string"
-                                                },
-                                                "memory" : {
-                                                   "description" : "Amount of memory this NUMA node provides.",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "policy" : {
-                                                   "description" : "NUMA allocation policy.",
-                                                   "enum" : [
-                                                      "preferred",
-                                                      "bind",
-                                                      "interleave"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
-                                          },
-                                          "onboot" : {
-                                             "default" : 0,
-                                             "description" : "Specifies whether a VM will be started during system bootup.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "ostype" : {
-                                             "description" : "Specify guest operating system.",
-                                             "enum" : [
-                                                "other",
-                                                "wxp",
-                                                "w2k",
-                                                "w2k3",
-                                                "w2k8",
-                                                "wvista",
-                                                "win7",
-                                                "win8",
-                                                "win10",
-                                                "win11",
-                                                "l24",
-                                                "l26",
-                                                "solaris"
-                                             ],
-                                             "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "protection" : {
-                                             "default" : 0,
-                                             "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "reboot" : {
-                                             "default" : 1,
-                                             "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "revert" : {
-                                             "description" : "Revert a pending change.",
-                                             "format" : "pve-configid-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "rng0" : {
-                                             "description" : "Configure a VirtIO-based Random Number Generator.",
-                                             "format" : {
-                                                "max_bytes" : {
-                                                   "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "queues" : {
-                                                   "description" : "Number of queues.",
-                                                   "minimum" : 2,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "scsiblock" : {
-                                                   "default" : 0,
-                                                   "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
-                                             "description" : "SCSI controller model",
-                                             "enum" : [
-                                                "lsi",
-                                                "lsi53c810",
-                                                "virtio-scsi-pci",
-                                                "virtio-scsi-single",
-                                                "megasas",
-                                                "pvscsi"
-                                             ],
-                                             "optional" : 1,
-                                             "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.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "serial[n]" : {
-                                             "description" : "Create a serial device inside the VM (n is 0 to 3)",
-                                             "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "shares" : {
-                                             "default" : 1000,
-                                             "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
-                                             "maximum" : 50000,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - 50000)"
-                                          },
-                                          "skiplock" : {
-                                             "description" : "Ignore locks - only root is allowed to use this option.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "smbios1" : {
-                                             "description" : "Specify SMBIOS type 1 fields.",
-                                             "format" : "pve-qm-smbios1",
-                                             "maxLength" : 512,
-                                             "optional" : 1,
-                                             "type" : "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,
-                                             "description" : "The number of CPUs. Please use option -sockets instead.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "sockets" : {
-                                             "default" : 1,
-                                             "description" : "The number of CPU sockets.",
-                                             "minimum" : 1,
-                                             "optional" : 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",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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'.",
-                                             "optional" : 1,
-                                             "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
-                                             "type" : "string",
-                                             "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
-                                          },
-                                          "startup" : {
-                                             "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                             "format" : "pve-startup-order",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                                          },
-                                          "tablet" : {
-                                             "default" : 1,
-                                             "description" : "Enable/disable the USB tablet device.",
-                                             "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 (`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,
-                                             "description" : "Enable/disable time drift fix.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "template" : {
-                                             "default" : 0,
-                                             "description" : "Enable/disable Template.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "version" : {
-                                                   "default" : "v2.0",
-                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
-                                                   "enum" : [
-                                                      "v1.2",
-                                                      "v2.0"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
-                                          },
-                                          "unused[n]" : {
-                                             "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                             "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" : "[file=]<volume>"
-                                          },
-                                          "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
-                                             "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
-                                          },
-                                          "vcpus" : {
-                                             "default" : 0,
-                                             "description" : "Number of hotplugged vcpus.",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vga" : {
-                                             "description" : "Configure the VGA hardware.",
-                                             "format" : {
-                                                "memory" : {
-                                                   "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
-                                                   "maximum" : 512,
-                                                   "minimum" : 4,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "type" : {
-                                                   "default" : "std",
-                                                   "default_key" : 1,
-                                                   "description" : "Select the VGA type.",
-                                                   "enum" : [
-                                                      "cirrus",
-                                                      "qxl",
-                                                      "qxl2",
-                                                      "qxl3",
-                                                      "qxl4",
-                                                      "none",
-                                                      "serial0",
-                                                      "serial1",
-                                                      "serial2",
-                                                      "serial3",
-                                                      "std",
-                                                      "virtio",
-                                                      "virtio-gl",
-                                                      "vmware"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[type=]<enum>] [,memory=<integer>]",
-                                             "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Whether the drive is read-only.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
-                                          },
-                                          "vmgenid" : {
-                                             "default" : "1 (autogenerated)",
-                                             "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
-                                             "format_description" : "UUID",
-                                             "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 through API/CLI create or update methods, but not when manually editing the config file."
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vmstatestorage" : {
-                                             "description" : "Default storage for VM state volumes/files.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "watchdog" : {
-                                             "description" : "Create a virtual hardware watchdog device.",
-                                             "format" : "pve-qm-watchdog",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
-                                             "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Config.Disk",
-                                             "VM.Config.CDROM",
-                                             "VM.Config.CPU",
-                                             "VM.Config.Memory",
-                                             "VM.Config.Network",
-                                             "VM.Config.HWType",
-                                             "VM.Config.Options",
-                                             "VM.Config.Cloudinit"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/config",
-                              "text" : "config"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get the virtual machine configuration with both current and pending values.",
-                                    "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. The value 2 indicates a force-delete request.",
-                                                "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}/qemu/{vmid}/pending",
-                              "text" : "pending"
-                           },
-                           {
-                              "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"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get the cloudinit configuration with both current and pending values.",
-                                    "method" : "GET",
-                                    "name" : "cloudinit_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" : {
-                                             "key" : {
-                                                "description" : "Configuration option name.",
-                                                "type" : "string"
-                                             },
-                                             "new" : {
-                                                "description" : "The new pending value.",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             },
-                                             "old" : {
-                                                "description" : "Value as it was used to generate the current cloudinit image.",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Regenerate and change cloudinit config drive.",
-                                    "method" : "PUT",
-                                    "name" : "cloudinit_update",
-                                    "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.Config.Cloudinit"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/cloudinit",
-                              "text" : "cloudinit"
-                           },
-                           {
-                              "info" : {
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Unlink/delete disk images.",
-                                    "method" : "PUT",
-                                    "name" : "unlink",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "force" : {
-                                             "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "idlist" : {
-                                             "description" : "A list of disk IDs you want to delete.",
-                                             "format" : "pve-configid-list",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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.Config.Disk"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/unlink",
-                              "text" : "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",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "websocket" : {
-                                             "description" : "starts websockify instead of vncproxy",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cert" : {
-                                             "type" : "string"
-                                          },
-                                          "password" : {
-                                             "description" : "Returned if requested with 'generate-password' param. Consists of printable ASCII characters ('!' .. '~').",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "port" : {
-                                             "type" : "integer"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          },
-                                          "user" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/vncproxy",
-                              "text" : "vncproxy"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Creates a TCP proxy connections.",
-                                    "method" : "POST",
-                                    "name" : "termproxy",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "serial" : {
-                                             "description" : "opens a serial terminal (defaults to display)",
-                                             "enum" : [
-                                                "serial0",
-                                                "serial1",
-                                                "serial2",
-                                                "serial3"
-                                             ],
-                                             "optional" : 1,
-                                             "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.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "port" : {
-                                             "type" : "integer"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          },
-                                          "user" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/termproxy",
-                              "text" : "termproxy"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Opens a weksocket for VNC traffic.",
-                                    "method" : "GET",
-                                    "name" : "vncwebsocket",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "port" : {
-                                             "description" : "Port number returned by previous vncproxy call.",
-                                             "maximum" : 5999,
-                                             "minimum" : 5900,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (5900 - 5999)"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vncticket" : {
-                                             "description" : "Ticket from previous call to vncproxy.",
-                                             "maxLength" : 512,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Console"
-                                          ]
-                                       ],
-                                       "description" : "You also need to pass a valid ticket (vncticket)."
-                                    },
-                                    "returns" : {
-                                       "properties" : {
-                                          "port" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/vncwebsocket",
-                              "text" : "vncwebsocket"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Returns a SPICE configuration to connect to the VM.",
-                                    "method" : "POST",
-                                    "name" : "spiceproxy",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "proxy" : {
-                                             "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
-                                             "format" : "address",
-                                             "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.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "additionalProperties" : 1,
-                                       "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
-                                       "properties" : {
-                                          "host" : {
-                                             "type" : "string"
-                                          },
-                                          "password" : {
-                                             "type" : "string"
-                                          },
-                                          "proxy" : {
-                                             "type" : "string"
-                                          },
-                                          "tls-port" : {
-                                             "type" : "integer"
-                                          },
-                                          "type" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/spiceproxy",
-                              "text" : "spiceproxy"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get virtual machine status.",
-                                          "method" : "GET",
-                                          "name" : "vm_status",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "properties" : {
-                                                "agent" : {
-                                                   "description" : "Qemu GuestAgent enabled in config.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "cpus" : {
-                                                   "description" : "Maximum usable CPUs.",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "ha" : {
-                                                   "description" : "HA manager service status.",
-                                                   "type" : "object"
-                                                },
-                                                "lock" : {
-                                                   "description" : "The current config lock, if any.",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "maxdisk" : {
-                                                   "description" : "Root disk size in bytes.",
-                                                   "optional" : 1,
-                                                   "renderer" : "bytes",
-                                                   "type" : "integer"
-                                                },
-                                                "maxmem" : {
-                                                   "description" : "Maximum memory in bytes.",
-                                                   "optional" : 1,
-                                                   "renderer" : "bytes",
-                                                   "type" : "integer"
-                                                },
-                                                "name" : {
-                                                   "description" : "VM name.",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "pid" : {
-                                                   "description" : "PID of running qemu process.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "qmpstatus" : {
-                                                   "description" : "Qemu QMP agent 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" : "boolean"
-                                                },
-                                                "status" : {
-                                                   "description" : "Qemu process status.",
-                                                   "enum" : [
-                                                      "stopped",
-                                                      "running"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "tags" : {
-                                                   "description" : "The current configured tags, if any",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "uptime" : {
-                                                   "description" : "Uptime.",
-                                                   "optional" : 1,
-                                                   "renderer" : "duration",
-                                                   "type" : "integer"
-                                                },
-                                                "vmid" : {
-                                                   "description" : "The (unique) ID of the VM.",
-                                                   "format" : "pve-vmid",
-                                                   "minimum" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/status/current",
-                                    "text" : "current"
-                                 },
-                                 {
-                                    "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+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
-                                                   "type" : "string"
-                                                },
-                                                "migratedfrom" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "migration_network" : {
-                                                   "description" : "CIDR of the (sub) network that is used for migration.",
-                                                   "format" : "CIDR",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "migration_type" : {
-                                                   "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
-                                                   "enum" : [
-                                                      "secure",
-                                                      "insecure"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "stateuri" : {
-                                                   "description" : "Some command save/restore state from this location.",
-                                                   "maxLength" : 128,
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "targetstorage" : {
-                                                   "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" : "storage-pair-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",
-                                                   "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/start",
-                                    "text" : "start"
-                                 },
-                                 {
-                                    "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",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "keepActive" : {
-                                                   "default" : 0,
-                                                   "description" : "Do not deactivate storage volumes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "migratedfrom" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "timeout" : {
-                                                   "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",
-                                                   "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/stop",
-                                    "text" : "stop"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Reset virtual machine.",
-                                          "method" : "POST",
-                                          "name" : "vm_reset",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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/reset",
-                                    "text" : "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",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "forceStop" : {
-                                                   "default" : 0,
-                                                   "description" : "Make sure the VM stops.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "keepActive" : {
-                                                   "default" : 0,
-                                                   "description" : "Do not deactivate storage volumes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "timeout" : {
-                                                   "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",
-                                                   "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/shutdown",
-                                    "text" : "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",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "statestorage" : {
-                                                   "description" : "The storage for the VM state",
-                                                   "format" : "pve-storage-id",
-                                                   "optional" : 1,
-                                                   "requires" : "todisk",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "todisk" : {
-                                                   "default" : 0,
-                                                   "description" : "If set, suspends the VM to disk. Will be resumed on next VM start.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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"
-                                                ]
-                                             ],
-                                             "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",
-                                          "returns" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/status/suspend",
-                                    "text" : "suspend"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Resume virtual machine.",
-                                          "method" : "POST",
-                                          "name" : "vm_resume",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "nocheck" : {
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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/resume",
-                                    "text" : "resume"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Directory index",
-                                    "method" : "GET",
-                                    "name" : "vmcmdidx",
-                                    "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" : {
-                                       "user" : "all"
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "subdir" : {
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{subdir}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/status",
-                              "text" : "status"
-                           },
-                           {
-                              "info" : {
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Send key event to virtual machine.",
-                                    "method" : "PUT",
-                                    "name" : "vm_sendkey",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "key" : {
-                                             "description" : "The key (qemu monitor encoding).",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "skiplock" : {
-                                             "description" : "Ignore locks - only root is allowed to use this option.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "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.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/sendkey",
-                              "text" : "sendkey"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Check if feature for virtual machine is available.",
-                                    "method" : "GET",
-                                    "name" : "vm_feature",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "feature" : {
-                                             "description" : "Feature to check.",
-                                             "enum" : [
-                                                "snapshot",
-                                                "clone",
-                                                "copy"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "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.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "hasFeature" : {
-                                             "type" : "boolean"
-                                          },
-                                          "nodes" : {
-                                             "items" : {
-                                                "type" : "string"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/feature",
-                              "text" : "feature"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create a copy of virtual machine/template.",
-                                    "method" : "POST",
-                                    "name" : "clone_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "clone limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "description" : {
-                                             "description" : "Description for the new VM.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "format" : {
-                                             "description" : "Target format for file storage. Only valid for full clone.",
-                                             "enum" : [
-                                                "raw",
-                                                "qcow2",
-                                                "vmdk"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "full" : {
-                                             "description" : "Create a full copy of all disks. This is always done when you clone a normal VM. For VM templates, we try to create a linked clone by default.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "Set a name for the new VM.",
-                                             "format" : "dns-name",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "newid" : {
-                                             "description" : "VMID for the clone.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pool" : {
-                                             "description" : "Add the new VM to the specified pool.",
-                                             "format" : "pve-poolid",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "storage" : {
-                                             "description" : "Target storage for full clone.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target" : {
-                                             "description" : "Target node. Only allowed if the original VM is on shared storage.",
-                                             "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" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Clone"
-                                             ]
-                                          ],
-                                          [
-                                             "or",
-                                             [
-                                                "perm",
-                                                "/vms/{newid}",
-                                                [
-                                                   "VM.Allocate"
-                                                ]
-                                             ],
-                                             [
-                                                "perm",
-                                                "/pool/{pool}",
-                                                [
-                                                   "VM.Allocate"
-                                                ],
-                                                "require_param",
-                                                "pool"
-                                             ]
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/clone",
-                              "text" : "clone"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Move volume to different storage or to a different VM.",
-                                    "method" : "POST",
-                                    "name" : "move_vm_disk",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "move limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "delete" : {
-                                             "default" : 0,
-                                             "description" : "Delete the original disk after successful copy. By default the original disk is kept as unused disk.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1\"\n\t\t    .\" digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "disk" : {
-                                             "description" : "The disk you want to move.",
-                                             "enum" : [
-                                                "ide0",
-                                                "ide1",
-                                                "ide2",
-                                                "ide3",
-                                                "scsi0",
-                                                "scsi1",
-                                                "scsi2",
-                                                "scsi3",
-                                                "scsi4",
-                                                "scsi5",
-                                                "scsi6",
-                                                "scsi7",
-                                                "scsi8",
-                                                "scsi9",
-                                                "scsi10",
-                                                "scsi11",
-                                                "scsi12",
-                                                "scsi13",
-                                                "scsi14",
-                                                "scsi15",
-                                                "scsi16",
-                                                "scsi17",
-                                                "scsi18",
-                                                "scsi19",
-                                                "scsi20",
-                                                "scsi21",
-                                                "scsi22",
-                                                "scsi23",
-                                                "scsi24",
-                                                "scsi25",
-                                                "scsi26",
-                                                "scsi27",
-                                                "scsi28",
-                                                "scsi29",
-                                                "scsi30",
-                                                "virtio0",
-                                                "virtio1",
-                                                "virtio2",
-                                                "virtio3",
-                                                "virtio4",
-                                                "virtio5",
-                                                "virtio6",
-                                                "virtio7",
-                                                "virtio8",
-                                                "virtio9",
-                                                "virtio10",
-                                                "virtio11",
-                                                "virtio12",
-                                                "virtio13",
-                                                "virtio14",
-                                                "virtio15",
-                                                "sata0",
-                                                "sata1",
-                                                "sata2",
-                                                "sata3",
-                                                "sata4",
-                                                "sata5",
-                                                "efidisk0",
-                                                "tpmstate0",
-                                                "unused0",
-                                                "unused1",
-                                                "unused2",
-                                                "unused3",
-                                                "unused4",
-                                                "unused5",
-                                                "unused6",
-                                                "unused7",
-                                                "unused8",
-                                                "unused9",
-                                                "unused10",
-                                                "unused11",
-                                                "unused12",
-                                                "unused13",
-                                                "unused14",
-                                                "unused15",
-                                                "unused16",
-                                                "unused17",
-                                                "unused18",
-                                                "unused19",
-                                                "unused20",
-                                                "unused21",
-                                                "unused22",
-                                                "unused23",
-                                                "unused24",
-                                                "unused25",
-                                                "unused26",
-                                                "unused27",
-                                                "unused28",
-                                                "unused29",
-                                                "unused30",
-                                                "unused31",
-                                                "unused32",
-                                                "unused33",
-                                                "unused34",
-                                                "unused35",
-                                                "unused36",
-                                                "unused37",
-                                                "unused38",
-                                                "unused39",
-                                                "unused40",
-                                                "unused41",
-                                                "unused42",
-                                                "unused43",
-                                                "unused44",
-                                                "unused45",
-                                                "unused46",
-                                                "unused47",
-                                                "unused48",
-                                                "unused49",
-                                                "unused50",
-                                                "unused51",
-                                                "unused52",
-                                                "unused53",
-                                                "unused54",
-                                                "unused55",
-                                                "unused56",
-                                                "unused57",
-                                                "unused58",
-                                                "unused59",
-                                                "unused60",
-                                                "unused61",
-                                                "unused62",
-                                                "unused63",
-                                                "unused64",
-                                                "unused65",
-                                                "unused66",
-                                                "unused67",
-                                                "unused68",
-                                                "unused69",
-                                                "unused70",
-                                                "unused71",
-                                                "unused72",
-                                                "unused73",
-                                                "unused74",
-                                                "unused75",
-                                                "unused76",
-                                                "unused77",
-                                                "unused78",
-                                                "unused79",
-                                                "unused80",
-                                                "unused81",
-                                                "unused82",
-                                                "unused83",
-                                                "unused84",
-                                                "unused85",
-                                                "unused86",
-                                                "unused87",
-                                                "unused88",
-                                                "unused89",
-                                                "unused90",
-                                                "unused91",
-                                                "unused92",
-                                                "unused93",
-                                                "unused94",
-                                                "unused95",
-                                                "unused96",
-                                                "unused97",
-                                                "unused98",
-                                                "unused99",
-                                                "unused100",
-                                                "unused101",
-                                                "unused102",
-                                                "unused103",
-                                                "unused104",
-                                                "unused105",
-                                                "unused106",
-                                                "unused107",
-                                                "unused108",
-                                                "unused109",
-                                                "unused110",
-                                                "unused111",
-                                                "unused112",
-                                                "unused113",
-                                                "unused114",
-                                                "unused115",
-                                                "unused116",
-                                                "unused117",
-                                                "unused118",
-                                                "unused119",
-                                                "unused120",
-                                                "unused121",
-                                                "unused122",
-                                                "unused123",
-                                                "unused124",
-                                                "unused125",
-                                                "unused126",
-                                                "unused127",
-                                                "unused128",
-                                                "unused129",
-                                                "unused130",
-                                                "unused131",
-                                                "unused132",
-                                                "unused133",
-                                                "unused134",
-                                                "unused135",
-                                                "unused136",
-                                                "unused137",
-                                                "unused138",
-                                                "unused139",
-                                                "unused140",
-                                                "unused141",
-                                                "unused142",
-                                                "unused143",
-                                                "unused144",
-                                                "unused145",
-                                                "unused146",
-                                                "unused147",
-                                                "unused148",
-                                                "unused149",
-                                                "unused150",
-                                                "unused151",
-                                                "unused152",
-                                                "unused153",
-                                                "unused154",
-                                                "unused155",
-                                                "unused156",
-                                                "unused157",
-                                                "unused158",
-                                                "unused159",
-                                                "unused160",
-                                                "unused161",
-                                                "unused162",
-                                                "unused163",
-                                                "unused164",
-                                                "unused165",
-                                                "unused166",
-                                                "unused167",
-                                                "unused168",
-                                                "unused169",
-                                                "unused170",
-                                                "unused171",
-                                                "unused172",
-                                                "unused173",
-                                                "unused174",
-                                                "unused175",
-                                                "unused176",
-                                                "unused177",
-                                                "unused178",
-                                                "unused179",
-                                                "unused180",
-                                                "unused181",
-                                                "unused182",
-                                                "unused183",
-                                                "unused184",
-                                                "unused185",
-                                                "unused186",
-                                                "unused187",
-                                                "unused188",
-                                                "unused189",
-                                                "unused190",
-                                                "unused191",
-                                                "unused192",
-                                                "unused193",
-                                                "unused194",
-                                                "unused195",
-                                                "unused196",
-                                                "unused197",
-                                                "unused198",
-                                                "unused199",
-                                                "unused200",
-                                                "unused201",
-                                                "unused202",
-                                                "unused203",
-                                                "unused204",
-                                                "unused205",
-                                                "unused206",
-                                                "unused207",
-                                                "unused208",
-                                                "unused209",
-                                                "unused210",
-                                                "unused211",
-                                                "unused212",
-                                                "unused213",
-                                                "unused214",
-                                                "unused215",
-                                                "unused216",
-                                                "unused217",
-                                                "unused218",
-                                                "unused219",
-                                                "unused220",
-                                                "unused221",
-                                                "unused222",
-                                                "unused223",
-                                                "unused224",
-                                                "unused225",
-                                                "unused226",
-                                                "unused227",
-                                                "unused228",
-                                                "unused229",
-                                                "unused230",
-                                                "unused231",
-                                                "unused232",
-                                                "unused233",
-                                                "unused234",
-                                                "unused235",
-                                                "unused236",
-                                                "unused237",
-                                                "unused238",
-                                                "unused239",
-                                                "unused240",
-                                                "unused241",
-                                                "unused242",
-                                                "unused243",
-                                                "unused244",
-                                                "unused245",
-                                                "unused246",
-                                                "unused247",
-                                                "unused248",
-                                                "unused249",
-                                                "unused250",
-                                                "unused251",
-                                                "unused252",
-                                                "unused253",
-                                                "unused254",
-                                                "unused255"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "format" : {
-                                             "description" : "Target Format.",
-                                             "enum" : [
-                                                "raw",
-                                                "qcow2",
-                                                "vmdk"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "storage" : {
-                                             "description" : "Target storage.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-digest" : {
-                                             "description" : "Prevent changes if the current config file of the target VM has a\"\n\t\t    .\" different SHA1 digest. This can be used to detect concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-disk" : {
-                                             "description" : "The config key the disk will be moved to on the target VM (for example, ide0 or scsi1). Default is the source disk key.",
-                                             "enum" : [
-                                                "ide0",
-                                                "ide1",
-                                                "ide2",
-                                                "ide3",
-                                                "scsi0",
-                                                "scsi1",
-                                                "scsi2",
-                                                "scsi3",
-                                                "scsi4",
-                                                "scsi5",
-                                                "scsi6",
-                                                "scsi7",
-                                                "scsi8",
-                                                "scsi9",
-                                                "scsi10",
-                                                "scsi11",
-                                                "scsi12",
-                                                "scsi13",
-                                                "scsi14",
-                                                "scsi15",
-                                                "scsi16",
-                                                "scsi17",
-                                                "scsi18",
-                                                "scsi19",
-                                                "scsi20",
-                                                "scsi21",
-                                                "scsi22",
-                                                "scsi23",
-                                                "scsi24",
-                                                "scsi25",
-                                                "scsi26",
-                                                "scsi27",
-                                                "scsi28",
-                                                "scsi29",
-                                                "scsi30",
-                                                "virtio0",
-                                                "virtio1",
-                                                "virtio2",
-                                                "virtio3",
-                                                "virtio4",
-                                                "virtio5",
-                                                "virtio6",
-                                                "virtio7",
-                                                "virtio8",
-                                                "virtio9",
-                                                "virtio10",
-                                                "virtio11",
-                                                "virtio12",
-                                                "virtio13",
-                                                "virtio14",
-                                                "virtio15",
-                                                "sata0",
-                                                "sata1",
-                                                "sata2",
-                                                "sata3",
-                                                "sata4",
-                                                "sata5",
-                                                "efidisk0",
-                                                "tpmstate0",
-                                                "unused0",
-                                                "unused1",
-                                                "unused2",
-                                                "unused3",
-                                                "unused4",
-                                                "unused5",
-                                                "unused6",
-                                                "unused7",
-                                                "unused8",
-                                                "unused9",
-                                                "unused10",
-                                                "unused11",
-                                                "unused12",
-                                                "unused13",
-                                                "unused14",
-                                                "unused15",
-                                                "unused16",
-                                                "unused17",
-                                                "unused18",
-                                                "unused19",
-                                                "unused20",
-                                                "unused21",
-                                                "unused22",
-                                                "unused23",
-                                                "unused24",
-                                                "unused25",
-                                                "unused26",
-                                                "unused27",
-                                                "unused28",
-                                                "unused29",
-                                                "unused30",
-                                                "unused31",
-                                                "unused32",
-                                                "unused33",
-                                                "unused34",
-                                                "unused35",
-                                                "unused36",
-                                                "unused37",
-                                                "unused38",
-                                                "unused39",
-                                                "unused40",
-                                                "unused41",
-                                                "unused42",
-                                                "unused43",
-                                                "unused44",
-                                                "unused45",
-                                                "unused46",
-                                                "unused47",
-                                                "unused48",
-                                                "unused49",
-                                                "unused50",
-                                                "unused51",
-                                                "unused52",
-                                                "unused53",
-                                                "unused54",
-                                                "unused55",
-                                                "unused56",
-                                                "unused57",
-                                                "unused58",
-                                                "unused59",
-                                                "unused60",
-                                                "unused61",
-                                                "unused62",
-                                                "unused63",
-                                                "unused64",
-                                                "unused65",
-                                                "unused66",
-                                                "unused67",
-                                                "unused68",
-                                                "unused69",
-                                                "unused70",
-                                                "unused71",
-                                                "unused72",
-                                                "unused73",
-                                                "unused74",
-                                                "unused75",
-                                                "unused76",
-                                                "unused77",
-                                                "unused78",
-                                                "unused79",
-                                                "unused80",
-                                                "unused81",
-                                                "unused82",
-                                                "unused83",
-                                                "unused84",
-                                                "unused85",
-                                                "unused86",
-                                                "unused87",
-                                                "unused88",
-                                                "unused89",
-                                                "unused90",
-                                                "unused91",
-                                                "unused92",
-                                                "unused93",
-                                                "unused94",
-                                                "unused95",
-                                                "unused96",
-                                                "unused97",
-                                                "unused98",
-                                                "unused99",
-                                                "unused100",
-                                                "unused101",
-                                                "unused102",
-                                                "unused103",
-                                                "unused104",
-                                                "unused105",
-                                                "unused106",
-                                                "unused107",
-                                                "unused108",
-                                                "unused109",
-                                                "unused110",
-                                                "unused111",
-                                                "unused112",
-                                                "unused113",
-                                                "unused114",
-                                                "unused115",
-                                                "unused116",
-                                                "unused117",
-                                                "unused118",
-                                                "unused119",
-                                                "unused120",
-                                                "unused121",
-                                                "unused122",
-                                                "unused123",
-                                                "unused124",
-                                                "unused125",
-                                                "unused126",
-                                                "unused127",
-                                                "unused128",
-                                                "unused129",
-                                                "unused130",
-                                                "unused131",
-                                                "unused132",
-                                                "unused133",
-                                                "unused134",
-                                                "unused135",
-                                                "unused136",
-                                                "unused137",
-                                                "unused138",
-                                                "unused139",
-                                                "unused140",
-                                                "unused141",
-                                                "unused142",
-                                                "unused143",
-                                                "unused144",
-                                                "unused145",
-                                                "unused146",
-                                                "unused147",
-                                                "unused148",
-                                                "unused149",
-                                                "unused150",
-                                                "unused151",
-                                                "unused152",
-                                                "unused153",
-                                                "unused154",
-                                                "unused155",
-                                                "unused156",
-                                                "unused157",
-                                                "unused158",
-                                                "unused159",
-                                                "unused160",
-                                                "unused161",
-                                                "unused162",
-                                                "unused163",
-                                                "unused164",
-                                                "unused165",
-                                                "unused166",
-                                                "unused167",
-                                                "unused168",
-                                                "unused169",
-                                                "unused170",
-                                                "unused171",
-                                                "unused172",
-                                                "unused173",
-                                                "unused174",
-                                                "unused175",
-                                                "unused176",
-                                                "unused177",
-                                                "unused178",
-                                                "unused179",
-                                                "unused180",
-                                                "unused181",
-                                                "unused182",
-                                                "unused183",
-                                                "unused184",
-                                                "unused185",
-                                                "unused186",
-                                                "unused187",
-                                                "unused188",
-                                                "unused189",
-                                                "unused190",
-                                                "unused191",
-                                                "unused192",
-                                                "unused193",
-                                                "unused194",
-                                                "unused195",
-                                                "unused196",
-                                                "unused197",
-                                                "unused198",
-                                                "unused199",
-                                                "unused200",
-                                                "unused201",
-                                                "unused202",
-                                                "unused203",
-                                                "unused204",
-                                                "unused205",
-                                                "unused206",
-                                                "unused207",
-                                                "unused208",
-                                                "unused209",
-                                                "unused210",
-                                                "unused211",
-                                                "unused212",
-                                                "unused213",
-                                                "unused214",
-                                                "unused215",
-                                                "unused216",
-                                                "unused217",
-                                                "unused218",
-                                                "unused219",
-                                                "unused220",
-                                                "unused221",
-                                                "unused222",
-                                                "unused223",
-                                                "unused224",
-                                                "unused225",
-                                                "unused226",
-                                                "unused227",
-                                                "unused228",
-                                                "unused229",
-                                                "unused230",
-                                                "unused231",
-                                                "unused232",
-                                                "unused233",
-                                                "unused234",
-                                                "unused235",
-                                                "unused236",
-                                                "unused237",
-                                                "unused238",
-                                                "unused239",
-                                                "unused240",
-                                                "unused241",
-                                                "unused242",
-                                                "unused243",
-                                                "unused244",
-                                                "unused245",
-                                                "unused246",
-                                                "unused247",
-                                                "unused248",
-                                                "unused249",
-                                                "unused250",
-                                                "unused251",
-                                                "unused252",
-                                                "unused253",
-                                                "unused254",
-                                                "unused255"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "target-vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 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.Config.Disk"
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a disk to another VM, you need the permissions on the target VM as well."
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/move_disk",
-                              "text" : "move_disk"
-                           },
-                           {
-                              "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",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "migrate limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "force" : {
-                                             "description" : "Allow to migrate VMs which use local devices. Only root may use this option.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "migration_network" : {
-                                             "description" : "CIDR of the (sub) network that is used for migration.",
-                                             "format" : "CIDR",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "migration_type" : {
-                                             "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
-                                             "enum" : [
-                                                "secure",
-                                                "insecure"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "online" : {
-                                             "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "target" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "targetstorage" : {
-                                             "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" : "storage-pair-list",
-                                             "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)"
-                                          },
-                                          "with-local-disks" : {
-                                             "description" : "Enable live storage migration for local disk",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Migrate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/migrate",
-                              "text" : "migrate"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migrate virtual machine to a remote cluster. Creates a new migration task. EXPERIMENTAL feature!",
-                                    "method" : "POST",
-                                    "name" : "remote_migrate_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "migrate limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "delete" : {
-                                             "default" : 0,
-                                             "description" : "Delete the original VM and related data after successful migration. By default the original VM is kept on the source cluster in a stopped state.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "online" : {
-                                             "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "target-bridge" : {
-                                             "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
-                                             "format" : "bridge-pair-list",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-endpoint" : {
-                                             "description" : "Remote target endpoint",
-                                             "format" : "proxmox-remote",
-                                             "type" : "string",
-                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
-                                          },
-                                          "target-storage" : {
-                                             "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" : "storage-pair-list",
-                                             "optional" : 0,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 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.Migrate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/remote_migrate",
-                              "text" : "remote_migrate"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Execute Qemu monitor commands.",
-                                    "method" : "POST",
-                                    "name" : "monitor",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "command" : {
-                                             "description" : "The monitor command.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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.Monitor"
-                                          ]
-                                       ],
-                                       "description" : "Sys.Modify is required for (sub)commands which are not read-only ('info *' and 'help')"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/monitor",
-                              "text" : "monitor"
-                           },
-                           {
-                              "info" : {
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Extend volume size.",
-                                    "method" : "PUT",
-                                    "name" : "resize_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "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>"
-                                          },
-                                          "disk" : {
-                                             "description" : "The disk you want to resize.",
-                                             "enum" : [
-                                                "ide0",
-                                                "ide1",
-                                                "ide2",
-                                                "ide3",
-                                                "scsi0",
-                                                "scsi1",
-                                                "scsi2",
-                                                "scsi3",
-                                                "scsi4",
-                                                "scsi5",
-                                                "scsi6",
-                                                "scsi7",
-                                                "scsi8",
-                                                "scsi9",
-                                                "scsi10",
-                                                "scsi11",
-                                                "scsi12",
-                                                "scsi13",
-                                                "scsi14",
-                                                "scsi15",
-                                                "scsi16",
-                                                "scsi17",
-                                                "scsi18",
-                                                "scsi19",
-                                                "scsi20",
-                                                "scsi21",
-                                                "scsi22",
-                                                "scsi23",
-                                                "scsi24",
-                                                "scsi25",
-                                                "scsi26",
-                                                "scsi27",
-                                                "scsi28",
-                                                "scsi29",
-                                                "scsi30",
-                                                "virtio0",
-                                                "virtio1",
-                                                "virtio2",
-                                                "virtio3",
-                                                "virtio4",
-                                                "virtio5",
-                                                "virtio6",
-                                                "virtio7",
-                                                "virtio8",
-                                                "virtio9",
-                                                "virtio10",
-                                                "virtio11",
-                                                "virtio12",
-                                                "virtio13",
-                                                "virtio14",
-                                                "virtio15",
-                                                "sata0",
-                                                "sata1",
-                                                "sata2",
-                                                "sata3",
-                                                "sata4",
-                                                "sata5",
-                                                "efidisk0",
-                                                "tpmstate0"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "size" : {
-                                             "description" : "The new size. With the `+` sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.",
-                                             "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?",
-                                             "type" : "string"
-                                          },
-                                          "skiplock" : {
-                                             "description" : "Ignore locks - only root is allowed to use this option.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "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.Config.Disk"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/resize",
-                              "text" : "resize"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Get snapshot configuration",
-                                                "method" : "GET",
-                                                "name" : "get_snapshot_config",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "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.Snapshot",
-                                                         "VM.Snapshot.Rollback",
-                                                         "VM.Audit"
-                                                      ],
-                                                      "any",
-                                                      1
-                                                   ]
-                                                },
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Update snapshot metadata.",
-                                                "method" : "PUT",
-                                                "name" : "update_snapshot_config",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "description" : {
-                                                         "description" : "A textual description or comment.",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "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.Snapshot"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/config",
-                                          "text" : "config"
-                                       },
-                                       {
-                                          "info" : {
-                                             "POST" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Rollback VM state to specified snapshot.",
-                                                "method" : "POST",
-                                                "name" : "rollback",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "start" : {
-                                                         "default" : 0,
-                                                         "description" : "Whether the VM should get started after rolling back successfully",
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "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.Snapshot",
-                                                         "VM.Snapshot.Rollback"
-                                                      ],
-                                                      "any",
-                                                      1
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "description" : "the task ID.",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/rollback",
-                                          "text" : "rollback"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "DELETE" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Delete a VM snapshot.",
-                                          "method" : "DELETE",
-                                          "name" : "delsnapshot",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "force" : {
-                                                   "description" : "For removal from config file, even if removing disk snapshots fails.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "snapname" : {
-                                                   "description" : "The name of the snapshot.",
-                                                   "format" : "pve-configid",
-                                                   "maxLength" : 40,
-                                                   "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.Snapshot"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "the task ID.",
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "",
-                                          "method" : "GET",
-                                          "name" : "snapshot_cmd_idx",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "snapname" : {
-                                                   "description" : "The name of the snapshot.",
-                                                   "format" : "pve-configid",
-                                                   "maxLength" : 40,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "vmid" : {
-                                                   "description" : "The (unique) ID of the VM.",
-                                                   "format" : "pve-vmid",
-                                                   "minimum" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "user" : "all"
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {},
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{cmd}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}",
-                                    "text" : "{snapname}"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "List all snapshots.",
-                                    "method" : "GET",
-                                    "name" : "snapshot_list",
-                                    "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "description" : {
-                                                "description" : "Snapshot description.",
-                                                "type" : "string"
-                                             },
-                                             "name" : {
-                                                "description" : "Snapshot identifier. Value 'current' identifies the current VM.",
-                                                "type" : "string"
-                                             },
-                                             "parent" : {
-                                                "description" : "Parent snapshot identifier.",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             },
-                                             "snaptime" : {
-                                                "description" : "Snapshot creation time",
-                                                "optional" : 1,
-                                                "renderer" : "timestamp",
-                                                "type" : "integer"
-                                             },
-                                             "vmstate" : {
-                                                "description" : "Snapshot includes RAM.",
-                                                "optional" : 1,
-                                                "type" : "boolean"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Snapshot a VM.",
-                                    "method" : "POST",
-                                    "name" : "snapshot",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "description" : {
-                                             "description" : "A textual description or comment.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vmstate" : {
-                                             "description" : "Save the vmstate",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Snapshot"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/snapshot",
-                              "text" : "snapshot"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create a Template.",
-                                    "method" : "POST",
-                                    "name" : "template",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "disk" : {
-                                             "description" : "If you want to convert only 1 disk to base image.",
-                                             "enum" : [
-                                                "ide0",
-                                                "ide1",
-                                                "ide2",
-                                                "ide3",
-                                                "scsi0",
-                                                "scsi1",
-                                                "scsi2",
-                                                "scsi3",
-                                                "scsi4",
-                                                "scsi5",
-                                                "scsi6",
-                                                "scsi7",
-                                                "scsi8",
-                                                "scsi9",
-                                                "scsi10",
-                                                "scsi11",
-                                                "scsi12",
-                                                "scsi13",
-                                                "scsi14",
-                                                "scsi15",
-                                                "scsi16",
-                                                "scsi17",
-                                                "scsi18",
-                                                "scsi19",
-                                                "scsi20",
-                                                "scsi21",
-                                                "scsi22",
-                                                "scsi23",
-                                                "scsi24",
-                                                "scsi25",
-                                                "scsi26",
-                                                "scsi27",
-                                                "scsi28",
-                                                "scsi29",
-                                                "scsi30",
-                                                "virtio0",
-                                                "virtio1",
-                                                "virtio2",
-                                                "virtio3",
-                                                "virtio4",
-                                                "virtio5",
-                                                "virtio6",
-                                                "virtio7",
-                                                "virtio8",
-                                                "virtio9",
-                                                "virtio10",
-                                                "virtio11",
-                                                "virtio12",
-                                                "virtio13",
-                                                "virtio14",
-                                                "virtio15",
-                                                "sata0",
-                                                "sata1",
-                                                "sata2",
-                                                "sata3",
-                                                "sata4",
-                                                "sata5",
-                                                "efidisk0",
-                                                "tpmstate0"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "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.Allocate"
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/template",
-                              "text" : "template"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migration tunnel endpoint - only for internal use by VM migration.",
-                                    "method" : "POST",
-                                    "name" : "mtunnel",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bridges" : {
-                                             "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
-                                             "format" : "pve-bridge-id-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "storages" : {
-                                             "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
-                                             "format" : "pve-storage-id-list",
-                                             "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" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Allocate"
-                                             ]
-                                          ],
-                                          [
-                                             "perm",
-                                             "/",
-                                             [
-                                                "Sys.Incoming"
-                                             ]
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "socket" : {
-                                             "type" : "string"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/mtunnel",
-                              "text" : "mtunnel"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
-                                    "method" : "GET",
-                                    "name" : "mtunnelwebsocket",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "socket" : {
-                                             "description" : "unix socket to forward to",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "ticket" : {
-                                             "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
-                                       "user" : "all"
-                                    },
-                                    "returns" : {
-                                       "properties" : {
-                                          "port" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "socket" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/qemu/{vmid}/mtunnelwebsocket",
-                              "text" : "mtunnelwebsocket"
-                           }
-                        ],
-                        "info" : {
-                           "DELETE" : {
-                              "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,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Directory index",
-                              "method" : "GET",
-                              "name" : "vmdiridx",
-                              "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" : {
-                                 "user" : "all"
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "subdir" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{subdir}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/qemu/{vmid}",
-                        "text" : "{vmid}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Virtual machine index (per node).",
-                        "method" : "GET",
-                        "name" : "vmlist",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "full" : {
-                                 "description" : "Determine the full status of active VMs.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "Only list VMs where you have VM.Audit permissons on /vms/<vmid>.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "cpus" : {
-                                    "description" : "Maximum usable CPUs.",
-                                    "optional" : 1,
-                                    "type" : "number"
-                                 },
-                                 "lock" : {
-                                    "description" : "The current config lock, if any.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "maxdisk" : {
-                                    "description" : "Root disk size in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "maxmem" : {
-                                    "description" : "Maximum memory in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "name" : {
-                                    "description" : "VM name.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "pid" : {
-                                    "description" : "PID of running qemu process.",
-                                    "optional" : 1,
-                                    "type" : "integer"
-                                 },
-                                 "qmpstatus" : {
-                                    "description" : "Qemu QMP agent 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"
-                                 },
-                                 "status" : {
-                                    "description" : "Qemu process status.",
-                                    "enum" : [
-                                       "stopped",
-                                       "running"
-                                    ],
-                                    "type" : "string"
-                                 },
-                                 "tags" : {
-                                    "description" : "The current configured tags, if any",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "uptime" : {
-                                    "description" : "Uptime.",
-                                    "optional" : 1,
-                                    "renderer" : "duration",
-                                    "type" : "integer"
-                                 },
-                                 "vmid" : {
-                                    "description" : "The (unique) ID of the VM.",
-                                    "format" : "pve-vmid",
-                                    "minimum" : 1,
-                                    "type" : "integer"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{vmid}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create or restore a virtual machine.",
-                        "method" : "POST",
-                        "name" : "create_vm",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "acpi" : {
-                                 "default" : 1,
-                                 "description" : "Enable/disable ACPI.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "affinity" : {
-                                 "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
-                                 "format" : "pve-cpuset",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "agent" : {
-                                 "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
-                                 "format" : {
-                                    "enabled" : {
-                                       "default" : 0,
-                                       "default_key" : 1,
-                                       "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
-                                       "type" : "boolean"
-                                    },
-                                    "fstrim_cloned_disks" : {
-                                       "default" : 0,
-                                       "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>] [,type=<virtio|isa>]"
-                              },
-                              "arch" : {
-                                 "description" : "Virtual processor architecture. Defaults to the host.",
-                                 "enum" : [
-                                    "x86_64",
-                                    "aarch64"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "archive" : {
-                                 "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>"
-                              },
-                              "args" : {
-                                 "description" : "Arbitrary arguments passed to kvm.",
-                                 "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).",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "balloon" : {
-                                 "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "bios" : {
-                                 "default" : "seabios",
-                                 "description" : "Select BIOS implementation.",
-                                 "enum" : [
-                                    "seabios",
-                                    "ovmf"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "boot" : {
-                                 "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
-                                 "format" : "pve-qm-boot",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
-                              },
-                              "bootdisk" : {
-                                 "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+",
-                                 "type" : "string"
-                              },
-                              "bwlimit" : {
-                                 "default" : "restore limit from datacenter or storage config",
-                                 "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "cdrom" : {
-                                 "description" : "This is an alias for option -ide2",
-                                 "format" : "pve-qm-ide",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<volume>"
-                              },
-                              "cicustom" : {
-                                 "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
-                                 "format" : "pve-qm-cicustom",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
-                              },
-                              "cipassword" : {
-                                 "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "citype" : {
-                                 "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",
-                                    "opennebula"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "ciuser" : {
-                                 "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "cores" : {
-                                 "default" : 1,
-                                 "description" : "The number of cores per socket.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "cpu" : {
-                                 "description" : "Emulated CPU type.",
-                                 "format" : "pve-vm-cpu-conf",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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,
-                                 "description" : "Limit of CPU usage.",
-                                 "maximum" : 128,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "number",
-                                 "typetext" : "<number> (0 - 128)",
-                                 "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
-                              },
-                              "cpuunits" : {
-                                 "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                 "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
-                                 "maximum" : 262144,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 262144)",
-                                 "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. 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. 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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "efitype" : {
-                                       "default" : "2m",
-                                       "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
-                                       "enum" : [
-                                          "2m",
-                                          "4m"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "format" : {
-                                       "description" : "The drive's backing file's data format.",
-                                       "enum" : [
-                                          "raw",
-                                          "cow",
-                                          "qcow",
-                                          "qed",
-                                          "qcow2",
-                                          "vmdk",
-                                          "cloop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "pre-enrolled-keys" : {
-                                       "default" : 0,
-                                       "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
-                              },
-                              "force" : {
-                                 "description" : "Allow to overwrite existing VM.",
-                                 "optional" : 1,
-                                 "requires" : "archive",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "freeze" : {
-                                 "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "hookscript" : {
-                                 "description" : "Script that will be executed during various steps in the vms lifetime.",
-                                 "format" : "pve-volume-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "hostpci[n]" : {
-                                 "description" : "Map host PCI devices into guest.",
-                                 "format" : "pve-qm-hostpci",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
-                                 "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
-                                 "format" : "pve-hotplug-features",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "hugepages" : {
-                                 "description" : "Enable/disable hugepages memory.",
-                                 "enum" : [
-                                    "any",
-                                    "2",
-                                    "1024"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "ide[n]" : {
-                                 "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "aio" : {
-                                       "description" : "AIO type to use.",
-                                       "enum" : [
-                                          "native",
-                                          "threads",
-                                          "io_uring"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "backup" : {
-                                       "description" : "Whether the drive should be included when making backups.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "bps" : {
-                                       "description" : "Maximum r/w speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd" : {
-                                       "description" : "Maximum read speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd_length" : {
-                                       "alias" : "bps_rd_max_length"
-                                    },
-                                    "bps_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr" : {
-                                       "description" : "Maximum write speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr_length" : {
-                                       "alias" : "bps_wr_max_length"
-                                    },
-                                    "bps_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "cache" : {
-                                       "description" : "The drive's cache mode",
-                                       "enum" : [
-                                          "none",
-                                          "writethrough",
-                                          "writeback",
-                                          "unsafe",
-                                          "directsync"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "cyls" : {
-                                       "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "detect_zeroes" : {
-                                       "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "discard" : {
-                                       "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                       "enum" : [
-                                          "ignore",
-                                          "on"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "format" : {
-                                       "description" : "The drive's backing file's data format.",
-                                       "enum" : [
-                                          "raw",
-                                          "cow",
-                                          "qcow",
-                                          "qed",
-                                          "qcow2",
-                                          "vmdk",
-                                          "cloop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "heads" : {
-                                       "description" : "Force the drive's physical geometry to have a specific head count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "iops" : {
-                                       "description" : "Maximum r/w I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max" : {
-                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd" : {
-                                       "description" : "Maximum read I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_length" : {
-                                       "alias" : "iops_rd_max_length"
-                                    },
-                                    "iops_rd_max" : {
-                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr" : {
-                                       "description" : "Maximum write I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_length" : {
-                                       "alias" : "iops_wr_max_length"
-                                    },
-                                    "iops_wr_max" : {
-                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "mbps" : {
-                                       "description" : "Maximum r/w speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_max" : {
-                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd" : {
-                                       "description" : "Maximum read speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd_max" : {
-                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr" : {
-                                       "description" : "Maximum write speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr_max" : {
-                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "media" : {
-                                       "default" : "disk",
-                                       "description" : "The drive's media type.",
-                                       "enum" : [
-                                          "cdrom",
-                                          "disk"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "model" : {
-                                       "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "model",
-                                       "maxLength" : 120,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Whether the drive should considered for replication jobs.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "rerror" : {
-                                       "description" : "Read error action.",
-                                       "enum" : [
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "secs" : {
-                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "serial" : {
-                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "serial",
-                                       "maxLength" : 60,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this locally-managed volume as available on all nodes",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "snapshot" : {
-                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ssd" : {
-                                       "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "trans" : {
-                                       "description" : "Force disk geometry bios translation mode.",
-                                       "enum" : [
-                                          "none",
-                                          "lba",
-                                          "auto"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    },
-                                    "werror" : {
-                                       "description" : "Write error action.",
-                                       "enum" : [
-                                          "enospc",
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "wwn" : {
-                                       "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                       "format_description" : "wwn",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
-                                 "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
-                              },
-                              "ivshmem" : {
-                                 "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
-                                 "format" : {
-                                    "name" : {
-                                       "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
-                                       "format_description" : "string",
-                                       "optional" : 1,
-                                       "pattern" : "[a-zA-Z0-9\\-]+",
-                                       "type" : "string"
-                                    },
-                                    "size" : {
-                                       "description" : "The size of the file in MB.",
-                                       "minimum" : 1,
-                                       "type" : "integer"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
-                                 "enum" : [
-                                    "de",
-                                    "de-ch",
-                                    "da",
-                                    "en-gb",
-                                    "en-us",
-                                    "es",
-                                    "fi",
-                                    "fr",
-                                    "fr-be",
-                                    "fr-ca",
-                                    "fr-ch",
-                                    "hu",
-                                    "is",
-                                    "it",
-                                    "ja",
-                                    "lt",
-                                    "mk",
-                                    "nl",
-                                    "no",
-                                    "pl",
-                                    "pt",
-                                    "pt-br",
-                                    "sv",
-                                    "sl",
-                                    "tr"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "kvm" : {
-                                 "default" : 1,
-                                 "description" : "Enable/disable KVM hardware virtualization.",
-                                 "optional" : 1,
-                                 "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 (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "lock" : {
-                                 "description" : "Lock/unlock the VM.",
-                                 "enum" : [
-                                    "backup",
-                                    "clone",
-                                    "create",
-                                    "migrate",
-                                    "rollback",
-                                    "snapshot",
-                                    "snapshot-delete",
-                                    "suspending",
-                                    "suspended"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "machine" : {
-                                 "description" : "Specifies the Qemu machine type.",
-                                 "maxLength" : 40,
-                                 "optional" : 1,
-                                 "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" : {
-                                 "default" : 512,
-                                 "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                 "minimum" : 16,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (16 - N)"
-                              },
-                              "migrate_downtime" : {
-                                 "default" : 0.1,
-                                 "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "number",
-                                 "typetext" : "<number> (0 - N)"
-                              },
-                              "migrate_speed" : {
-                                 "default" : 0,
-                                 "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "name" : {
-                                 "description" : "Set a name for the VM. Only used on the configuration web interface.",
-                                 "format" : "dns-name",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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.",
-                                 "format" : "address-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "net[n]" : {
-                                 "description" : "Specify network devices.",
-                                 "format" : {
-                                    "bridge" : {
-                                       "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" : "pve-bridge-id",
-                                       "format_description" : "bridge",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "e1000" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "e1000-82540em" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "e1000-82544gc" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "e1000-82545em" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "e1000e" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "firewall" : {
-                                       "description" : "Whether this interface should be protected by the firewall.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "i82551" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "i82557b" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "i82559er" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "link_down" : {
-                                       "description" : "Whether this interface should be disconnected (like pulling the plug).",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "macaddr" : {
-                                       "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
-                                       "format" : "mac-addr",
-                                       "format_description" : "XX:XX:XX:XX:XX:XX",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                    },
-                                    "model" : {
-                                       "default_key" : 1,
-                                       "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
-                                       "enum" : [
-                                          "e1000",
-                                          "e1000-82540em",
-                                          "e1000-82544gc",
-                                          "e1000-82545em",
-                                          "e1000e",
-                                          "i82551",
-                                          "i82557b",
-                                          "i82559er",
-                                          "ne2k_isa",
-                                          "ne2k_pci",
-                                          "pcnet",
-                                          "rtl8139",
-                                          "virtio",
-                                          "vmxnet3"
-                                       ],
-                                       "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"
-                                    },
-                                    "ne2k_pci" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "pcnet" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "queues" : {
-                                       "description" : "Number of packet queues to be used on the device.",
-                                       "maximum" : 64,
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "rate" : {
-                                       "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "rtl8139" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "tag" : {
-                                       "description" : "VLAN tag to apply to packets on this interface.",
-                                       "maximum" : 4094,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "trunks" : {
-                                       "description" : "VLAN trunks to pass through this interface.",
-                                       "format_description" : "vlanid[;vlanid...]",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                       "type" : "string"
-                                    },
-                                    "virtio" : {
-                                       "alias" : "macaddr",
-                                       "keyAlias" : "model"
-                                    },
-                                    "vmxnet3" : {
-                                       "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "numa" : {
-                                 "default" : 0,
-                                 "description" : "Enable/disable NUMA.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "numa[n]" : {
-                                 "description" : "NUMA topology.",
-                                 "format" : {
-                                    "cpus" : {
-                                       "description" : "CPUs accessing this NUMA node.",
-                                       "format_description" : "id[-id];...",
-                                       "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                       "type" : "string"
-                                    },
-                                    "hostnodes" : {
-                                       "description" : "Host NUMA nodes to use.",
-                                       "format_description" : "id[-id];...",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
-                                       "type" : "string"
-                                    },
-                                    "memory" : {
-                                       "description" : "Amount of memory this NUMA node provides.",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "policy" : {
-                                       "description" : "NUMA allocation policy.",
-                                       "enum" : [
-                                          "preferred",
-                                          "bind",
-                                          "interleave"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
-                              },
-                              "onboot" : {
-                                 "default" : 0,
-                                 "description" : "Specifies whether a VM will be started during system bootup.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "ostype" : {
-                                 "description" : "Specify guest operating system.",
-                                 "enum" : [
-                                    "other",
-                                    "wxp",
-                                    "w2k",
-                                    "w2k3",
-                                    "w2k8",
-                                    "wvista",
-                                    "win7",
-                                    "win8",
-                                    "win10",
-                                    "win11",
-                                    "l24",
-                                    "l26",
-                                    "solaris"
-                                 ],
-                                 "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                              },
-                              "pool" : {
-                                 "description" : "Add the VM to the specified pool.",
-                                 "format" : "pve-poolid",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "protection" : {
-                                 "default" : 0,
-                                 "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "reboot" : {
-                                 "default" : 1,
-                                 "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "rng0" : {
-                                 "description" : "Configure a VirtIO-based Random Number Generator.",
-                                 "format" : {
-                                    "max_bytes" : {
-                                       "default" : 1024,
-                                       "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "aio" : {
-                                       "description" : "AIO type to use.",
-                                       "enum" : [
-                                          "native",
-                                          "threads",
-                                          "io_uring"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "backup" : {
-                                       "description" : "Whether the drive should be included when making backups.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "bps" : {
-                                       "description" : "Maximum r/w speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd" : {
-                                       "description" : "Maximum read speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd_length" : {
-                                       "alias" : "bps_rd_max_length"
-                                    },
-                                    "bps_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr" : {
-                                       "description" : "Maximum write speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr_length" : {
-                                       "alias" : "bps_wr_max_length"
-                                    },
-                                    "bps_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "cache" : {
-                                       "description" : "The drive's cache mode",
-                                       "enum" : [
-                                          "none",
-                                          "writethrough",
-                                          "writeback",
-                                          "unsafe",
-                                          "directsync"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "cyls" : {
-                                       "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "detect_zeroes" : {
-                                       "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "discard" : {
-                                       "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                       "enum" : [
-                                          "ignore",
-                                          "on"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "format" : {
-                                       "description" : "The drive's backing file's data format.",
-                                       "enum" : [
-                                          "raw",
-                                          "cow",
-                                          "qcow",
-                                          "qed",
-                                          "qcow2",
-                                          "vmdk",
-                                          "cloop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "heads" : {
-                                       "description" : "Force the drive's physical geometry to have a specific head count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "iops" : {
-                                       "description" : "Maximum r/w I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max" : {
-                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd" : {
-                                       "description" : "Maximum read I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_length" : {
-                                       "alias" : "iops_rd_max_length"
-                                    },
-                                    "iops_rd_max" : {
-                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr" : {
-                                       "description" : "Maximum write I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_length" : {
-                                       "alias" : "iops_wr_max_length"
-                                    },
-                                    "iops_wr_max" : {
-                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "mbps" : {
-                                       "description" : "Maximum r/w speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_max" : {
-                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd" : {
-                                       "description" : "Maximum read speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd_max" : {
-                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr" : {
-                                       "description" : "Maximum write speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr_max" : {
-                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "media" : {
-                                       "default" : "disk",
-                                       "description" : "The drive's media type.",
-                                       "enum" : [
-                                          "cdrom",
-                                          "disk"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Whether the drive should considered for replication jobs.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "rerror" : {
-                                       "description" : "Read error action.",
-                                       "enum" : [
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "secs" : {
-                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "serial" : {
-                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "serial",
-                                       "maxLength" : 60,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this locally-managed volume as available on all nodes",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "snapshot" : {
-                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ssd" : {
-                                       "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "trans" : {
-                                       "description" : "Force disk geometry bios translation mode.",
-                                       "enum" : [
-                                          "none",
-                                          "lba",
-                                          "auto"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    },
-                                    "werror" : {
-                                       "description" : "Write error action.",
-                                       "enum" : [
-                                          "enospc",
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "wwn" : {
-                                       "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                       "format_description" : "wwn",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "aio" : {
-                                       "description" : "AIO type to use.",
-                                       "enum" : [
-                                          "native",
-                                          "threads",
-                                          "io_uring"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "backup" : {
-                                       "description" : "Whether the drive should be included when making backups.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "bps" : {
-                                       "description" : "Maximum r/w speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd" : {
-                                       "description" : "Maximum read speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd_length" : {
-                                       "alias" : "bps_rd_max_length"
-                                    },
-                                    "bps_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr" : {
-                                       "description" : "Maximum write speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr_length" : {
-                                       "alias" : "bps_wr_max_length"
-                                    },
-                                    "bps_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "cache" : {
-                                       "description" : "The drive's cache mode",
-                                       "enum" : [
-                                          "none",
-                                          "writethrough",
-                                          "writeback",
-                                          "unsafe",
-                                          "directsync"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "cyls" : {
-                                       "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "detect_zeroes" : {
-                                       "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "discard" : {
-                                       "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                       "enum" : [
-                                          "ignore",
-                                          "on"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "format" : {
-                                       "description" : "The drive's backing file's data format.",
-                                       "enum" : [
-                                          "raw",
-                                          "cow",
-                                          "qcow",
-                                          "qed",
-                                          "qcow2",
-                                          "vmdk",
-                                          "cloop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "heads" : {
-                                       "description" : "Force the drive's physical geometry to have a specific head count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "iops" : {
-                                       "description" : "Maximum r/w I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max" : {
-                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd" : {
-                                       "description" : "Maximum read I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_length" : {
-                                       "alias" : "iops_rd_max_length"
-                                    },
-                                    "iops_rd_max" : {
-                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr" : {
-                                       "description" : "Maximum write I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_length" : {
-                                       "alias" : "iops_wr_max_length"
-                                    },
-                                    "iops_wr_max" : {
-                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iothread" : {
-                                       "description" : "Whether to use iothreads for this drive",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "mbps" : {
-                                       "description" : "Maximum r/w speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_max" : {
-                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd" : {
-                                       "description" : "Maximum read speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd_max" : {
-                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr" : {
-                                       "description" : "Maximum write speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr_max" : {
-                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "media" : {
-                                       "default" : "disk",
-                                       "description" : "The drive's media type.",
-                                       "enum" : [
-                                          "cdrom",
-                                          "disk"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "queues" : {
-                                       "description" : "Number of queues.",
-                                       "minimum" : 2,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Whether the drive should considered for replication jobs.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "rerror" : {
-                                       "description" : "Read error action.",
-                                       "enum" : [
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "ro" : {
-                                       "description" : "Whether the drive is read-only.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "scsiblock" : {
-                                       "default" : 0,
-                                       "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "secs" : {
-                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "serial" : {
-                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "serial",
-                                       "maxLength" : 60,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this locally-managed volume as available on all nodes",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "snapshot" : {
-                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ssd" : {
-                                       "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "trans" : {
-                                       "description" : "Force disk geometry bios translation mode.",
-                                       "enum" : [
-                                          "none",
-                                          "lba",
-                                          "auto"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    },
-                                    "werror" : {
-                                       "description" : "Write error action.",
-                                       "enum" : [
-                                          "enospc",
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "wwn" : {
-                                       "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                       "format_description" : "wwn",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
-                                 "description" : "SCSI controller model",
-                                 "enum" : [
-                                    "lsi",
-                                    "lsi53c810",
-                                    "virtio-scsi-pci",
-                                    "virtio-scsi-single",
-                                    "megasas",
-                                    "pvscsi"
-                                 ],
-                                 "optional" : 1,
-                                 "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.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "serial[n]" : {
-                                 "description" : "Create a serial device inside the VM (n is 0 to 3)",
-                                 "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                              },
-                              "shares" : {
-                                 "default" : 1000,
-                                 "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
-                                 "maximum" : 50000,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 50000)"
-                              },
-                              "smbios1" : {
-                                 "description" : "Specify SMBIOS type 1 fields.",
-                                 "format" : "pve-qm-smbios1",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "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,
-                                 "description" : "The number of CPUs. Please use option -sockets instead.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "sockets" : {
-                                 "default" : 1,
-                                 "description" : "The number of CPU sockets.",
-                                 "minimum" : 1,
-                                 "optional" : 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",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "start" : {
-                                 "default" : 0,
-                                 "description" : "Start VM after it was created successfully.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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'.",
-                                 "optional" : 1,
-                                 "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
-                                 "type" : "string",
-                                 "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
-                              },
-                              "startup" : {
-                                 "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                 "format" : "pve-startup-order",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                              },
-                              "storage" : {
-                                 "description" : "Default storage.",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "tablet" : {
-                                 "default" : 1,
-                                 "description" : "Enable/disable the USB tablet device.",
-                                 "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 (`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,
-                                 "description" : "Enable/disable time drift fix.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "template" : {
-                                 "default" : 0,
-                                 "description" : "Enable/disable Template.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "tpmstate0" : {
-                                 "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "version" : {
-                                       "default" : "v2.0",
-                                       "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
-                                       "enum" : [
-                                          "v1.2",
-                                          "v2.0"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
-                              },
-                              "unique" : {
-                                 "description" : "Assign a unique random ethernet address.",
-                                 "optional" : 1,
-                                 "requires" : "archive",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "unused[n]" : {
-                                 "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                 "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" : "[file=]<volume>"
-                              },
-                              "usb[n]" : {
-                                 "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
-                                 "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
-                              },
-                              "vcpus" : {
-                                 "default" : 0,
-                                 "description" : "Number of hotplugged vcpus.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "vga" : {
-                                 "description" : "Configure the VGA hardware.",
-                                 "format" : {
-                                    "memory" : {
-                                       "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
-                                       "maximum" : 512,
-                                       "minimum" : 4,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "type" : {
-                                       "default" : "std",
-                                       "default_key" : 1,
-                                       "description" : "Select the VGA type.",
-                                       "enum" : [
-                                          "cirrus",
-                                          "qxl",
-                                          "qxl2",
-                                          "qxl3",
-                                          "qxl4",
-                                          "none",
-                                          "serial0",
-                                          "serial1",
-                                          "serial2",
-                                          "serial3",
-                                          "std",
-                                          "virtio",
-                                          "virtio-gl",
-                                          "vmware"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[[type=]<enum>] [,memory=<integer>]",
-                                 "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                 "format" : {
-                                    "aio" : {
-                                       "description" : "AIO type to use.",
-                                       "enum" : [
-                                          "native",
-                                          "threads",
-                                          "io_uring"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "backup" : {
-                                       "description" : "Whether the drive should be included when making backups.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "bps" : {
-                                       "description" : "Maximum r/w speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd" : {
-                                       "description" : "Maximum read speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_rd_length" : {
-                                       "alias" : "bps_rd_max_length"
-                                    },
-                                    "bps_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr" : {
-                                       "description" : "Maximum write speed in bytes per second.",
-                                       "format_description" : "bps",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "bps_wr_length" : {
-                                       "alias" : "bps_wr_max_length"
-                                    },
-                                    "bps_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "cache" : {
-                                       "description" : "The drive's cache mode",
-                                       "enum" : [
-                                          "none",
-                                          "writethrough",
-                                          "writeback",
-                                          "unsafe",
-                                          "directsync"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "cyls" : {
-                                       "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "detect_zeroes" : {
-                                       "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "discard" : {
-                                       "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                       "enum" : [
-                                          "ignore",
-                                          "on"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "file" : {
-                                       "default_key" : 1,
-                                       "description" : "The drive's backing volume.",
-                                       "format" : "pve-volume-id-or-qm-path",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    },
-                                    "format" : {
-                                       "description" : "The drive's backing file's data format.",
-                                       "enum" : [
-                                          "raw",
-                                          "cow",
-                                          "qcow",
-                                          "qed",
-                                          "qcow2",
-                                          "vmdk",
-                                          "cloop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "heads" : {
-                                       "description" : "Force the drive's physical geometry to have a specific head count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "import-from" : {
-                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                       "format" : "pve-volume-id-or-absolute-path",
-                                       "format_description" : "source volume",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "iops" : {
-                                       "description" : "Maximum r/w I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max" : {
-                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd" : {
-                                       "description" : "Maximum read I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_length" : {
-                                       "alias" : "iops_rd_max_length"
-                                    },
-                                    "iops_rd_max" : {
-                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr" : {
-                                       "description" : "Maximum write I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_length" : {
-                                       "alias" : "iops_wr_max_length"
-                                    },
-                                    "iops_wr_max" : {
-                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iothread" : {
-                                       "description" : "Whether to use iothreads for this drive",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "mbps" : {
-                                       "description" : "Maximum r/w speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_max" : {
-                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd" : {
-                                       "description" : "Maximum read speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd_max" : {
-                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr" : {
-                                       "description" : "Maximum write speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr_max" : {
-                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "media" : {
-                                       "default" : "disk",
-                                       "description" : "The drive's media type.",
-                                       "enum" : [
-                                          "cdrom",
-                                          "disk"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Whether the drive should considered for replication jobs.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "rerror" : {
-                                       "description" : "Read error action.",
-                                       "enum" : [
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "ro" : {
-                                       "description" : "Whether the drive is read-only.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "secs" : {
-                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "serial" : {
-                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "serial",
-                                       "maxLength" : 60,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this locally-managed volume as available on all nodes",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "snapshot" : {
-                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "trans" : {
-                                       "description" : "Force disk geometry bios translation mode.",
-                                       "enum" : [
-                                          "none",
-                                          "lba",
-                                          "auto"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    },
-                                    "werror" : {
-                                       "description" : "Write error action.",
-                                       "enum" : [
-                                          "enospc",
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
-                              },
-                              "vmgenid" : {
-                                 "default" : "1 (autogenerated)",
-                                 "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
-                                 "format_description" : "UUID",
-                                 "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 through API/CLI create or update methods, but not when manually editing the config file."
-                              },
-                              "vmid" : {
-                                 "description" : "The (unique) ID of the VM.",
-                                 "format" : "pve-vmid",
-                                 "minimum" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "vmstatestorage" : {
-                                 "description" : "Default storage for VM state volumes/files.",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "watchdog" : {
-                                 "description" : "Create a virtual hardware watchdog device.",
-                                 "format" : "pve-qm-watchdog",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
-                                 "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/qemu",
-                  "text" : "qemu"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "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",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapshot" : {
-                                             "description" : "Fetch config values from given snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "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.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "arch" : {
-                                             "default" : "amd64",
-                                             "description" : "OS architecture type.",
-                                             "enum" : [
-                                                "amd64",
-                                                "i386",
-                                                "arm64",
-                                                "armhf"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "cmode" : {
-                                             "default" : "tty",
-                                             "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
-                                             "enum" : [
-                                                "shell",
-                                                "console",
-                                                "tty"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "console" : {
-                                             "default" : 1,
-                                             "description" : "Attach a console device (/dev/console) to the container.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "cores" : {
-                                             "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
-                                             "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" : 8192,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number"
-                                          },
-                                          "cpuunits" : {
-                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                             "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
-                                             "maximum" : 500000,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
-                                          },
-                                          "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" : "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"
-                                          },
-                                          "digest" : {
-                                             "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.",
-                                             "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"
-                                                },
-                                                "keyctl" : {
-                                                   "default" : 0,
-                                                   "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mknod" : {
-                                                   "default" : 0,
-                                                   "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mount" : {
-                                                   "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
-                                                   "format_description" : "fstype;fstype;...",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
-                                                   "type" : "string"
-                                                },
-                                                "nesting" : {
-                                                   "default" : 0,
-                                                   "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "hookscript" : {
-                                             "description" : "Script that will be exectued during various steps in the containers lifetime.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "hostname" : {
-                                             "description" : "Set a host name for the container.",
-                                             "format" : "dns-name",
-                                             "maxLength" : 255,
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "lock" : {
-                                             "description" : "Lock/unlock the container.",
-                                             "enum" : [
-                                                "backup",
-                                                "create",
-                                                "destroyed",
-                                                "disk",
-                                                "fstrim",
-                                                "migrate",
-                                                "mounted",
-                                                "rollback",
-                                                "snapshot",
-                                                "snapshot-delete"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "lxc" : {
-                                             "description" : "Array of lxc low-level configurations ([[key1, value1], [key2, value2] ...]).",
-                                             "items" : {
-                                                "items" : {
-                                                   "type" : "string"
-                                                },
-                                                "type" : "array"
-                                             },
-                                             "optional" : 1,
-                                             "type" : "array"
-                                          },
-                                          "memory" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the container in MB.",
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "mp[n]" : {
-                                             "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.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether to include the mount point in backups.",
-                                                   "optional" : 1,
-                                                   "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
-                                                   "format_description" : "Path",
-                                                   "type" : "string",
-                                                   "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
-                                                },
-                                                "quota" : {
-                                                   "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Will include this volume to a storage replica job.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Read-only mount point",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Volume size (read only value).",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Volume, device or directory to mount into the container.",
-                                                   "format" : "pve-lxc-mp-string",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "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" : "lxc-ip-with-ll-iface-list",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "net[n]" : {
-                                             "description" : "Specifies network interfaces for the container.",
-                                             "format" : {
-                                                "bridge" : {
-                                                   "description" : "Bridge to attach the network device to.",
-                                                   "format_description" : "bridge",
-                                                   "optional" : 1,
-                                                   "pattern" : "[-_.\\w\\d]+",
-                                                   "type" : "string"
-                                                },
-                                                "firewall" : {
-                                                   "description" : "Controls whether this interface's firewall rules should be used.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "gw" : {
-                                                   "description" : "Default gateway for IPv4 traffic.",
-                                                   "format" : "ipv4",
-                                                   "format_description" : "GatewayIPv4",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "gw6" : {
-                                                   "description" : "Default gateway for IPv6 traffic.",
-                                                   "format" : "ipv6",
-                                                   "format_description" : "GatewayIPv6",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "hwaddr" : {
-                                                   "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
-                                                   "format" : "mac-addr",
-                                                   "format_description" : "XX:XX:XX:XX:XX:XX",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                                },
-                                                "ip" : {
-                                                   "description" : "IPv4 address in CIDR format.",
-                                                   "format" : "pve-ipv4-config",
-                                                   "format_description" : "(IPv4/CIDR|dhcp|manual)",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ip6" : {
-                                                   "description" : "IPv6 address in CIDR format.",
-                                                   "format" : "pve-ipv6-config",
-                                                   "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "mtu" : {
-                                                   "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
-                                                   "maximum" : 65535,
-                                                   "minimum" : 64,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "name" : {
-                                                   "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
-                                                   "format_description" : "string",
-                                                   "pattern" : "[-_.\\w\\d]+",
-                                                   "type" : "string"
-                                                },
-                                                "rate" : {
-                                                   "description" : "Apply rate limiting to the interface",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "tag" : {
-                                                   "description" : "VLAN tag for this interface.",
-                                                   "maximum" : 4094,
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "trunks" : {
-                                                   "description" : "VLAN ids to pass through the interface",
-                                                   "format_description" : "vlanid[;vlanid...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:;\\d+)*)",
-                                                   "type" : "string"
-                                                },
-                                                "type" : {
-                                                   "description" : "Network interface type.",
-                                                   "enum" : [
-                                                      "veth"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "onboot" : {
-                                             "default" : 0,
-                                             "description" : "Specifies whether a container will be started during system bootup.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "ostype" : {
-                                             "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",
-                                                "opensuse",
-                                                "archlinux",
-                                                "alpine",
-                                                "gentoo",
-                                                "nixos",
-                                                "unmanaged"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "protection" : {
-                                             "default" : 0,
-                                             "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "rootfs" : {
-                                             "description" : "Use volume as container root.",
-                                             "format" : {
-                                                "acl" : {
-                                                   "description" : "Explicitly enable or disable ACL support.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mountoptions" : {
-                                                   "description" : "Extra mount options for rootfs/mps.",
-                                                   "format_description" : "opt[;opt...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
-                                                   "type" : "string"
-                                                },
-                                                "quota" : {
-                                                   "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Will include this volume to a storage replica job.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Read-only mount point",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Volume size (read only value).",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Volume, device or directory to mount into the container.",
-                                                   "format" : "pve-lxc-mp-string",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "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.",
-                                             "format" : "dns-name-list",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "startup" : {
-                                             "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                             "format" : "pve-startup-order",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                                          },
-                                          "swap" : {
-                                             "default" : 512,
-                                             "description" : "Amount of SWAP for the container in MB.",
-                                             "minimum" : 0,
-                                             "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",
-                                             "maximum" : 6,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "unprivileged" : {
-                                             "default" : 0,
-                                             "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "unused[n]" : {
-                                             "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                             "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"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Set container options.",
-                                    "method" : "PUT",
-                                    "name" : "update_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "arch" : {
-                                             "default" : "amd64",
-                                             "description" : "OS architecture type.",
-                                             "enum" : [
-                                                "amd64",
-                                                "i386",
-                                                "arm64",
-                                                "armhf"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "cmode" : {
-                                             "default" : "tty",
-                                             "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
-                                             "enum" : [
-                                                "shell",
-                                                "console",
-                                                "tty"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "console" : {
-                                             "default" : 1,
-                                             "description" : "Attach a console device (/dev/console) to the container.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "cores" : {
-                                             "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
-                                             "maximum" : 8192,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "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" : 8192,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - 8192)"
-                                          },
-                                          "cpuunits" : {
-                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                             "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
-                                             "maximum" : 500000,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - 500000)",
-                                             "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
-                                          },
-                                          "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",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "description" : {
-                                             "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>"
-                                          },
-                                          "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>"
-                                          },
-                                          "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"
-                                                },
-                                                "keyctl" : {
-                                                   "default" : 0,
-                                                   "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mknod" : {
-                                                   "default" : 0,
-                                                   "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mount" : {
-                                                   "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
-                                                   "format_description" : "fstype;fstype;...",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
-                                                   "type" : "string"
-                                                },
-                                                "nesting" : {
-                                                   "default" : 0,
-                                                   "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hostname" : {
-                                             "description" : "Set a host name for the container.",
-                                             "format" : "dns-name",
-                                             "maxLength" : 255,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "lock" : {
-                                             "description" : "Lock/unlock the container.",
-                                             "enum" : [
-                                                "backup",
-                                                "create",
-                                                "destroyed",
-                                                "disk",
-                                                "fstrim",
-                                                "migrate",
-                                                "mounted",
-                                                "rollback",
-                                                "snapshot",
-                                                "snapshot-delete"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "memory" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the container in MB.",
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - N)"
-                                          },
-                                          "mp[n]" : {
-                                             "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.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether to include the mount point in backups.",
-                                                   "optional" : 1,
-                                                   "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
-                                                   "format_description" : "Path",
-                                                   "type" : "string",
-                                                   "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
-                                                },
-                                                "quota" : {
-                                                   "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Will include this volume to a storage replica job.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Read-only mount point",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Volume size (read only value).",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Volume, device or directory to mount into the container.",
-                                                   "format" : "pve-lxc-mp-string",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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" : "lxc-ip-with-ll-iface-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "net[n]" : {
-                                             "description" : "Specifies network interfaces for the container.",
-                                             "format" : {
-                                                "bridge" : {
-                                                   "description" : "Bridge to attach the network device to.",
-                                                   "format_description" : "bridge",
-                                                   "optional" : 1,
-                                                   "pattern" : "[-_.\\w\\d]+",
-                                                   "type" : "string"
-                                                },
-                                                "firewall" : {
-                                                   "description" : "Controls whether this interface's firewall rules should be used.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "gw" : {
-                                                   "description" : "Default gateway for IPv4 traffic.",
-                                                   "format" : "ipv4",
-                                                   "format_description" : "GatewayIPv4",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "gw6" : {
-                                                   "description" : "Default gateway for IPv6 traffic.",
-                                                   "format" : "ipv6",
-                                                   "format_description" : "GatewayIPv6",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "hwaddr" : {
-                                                   "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
-                                                   "format" : "mac-addr",
-                                                   "format_description" : "XX:XX:XX:XX:XX:XX",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                                },
-                                                "ip" : {
-                                                   "description" : "IPv4 address in CIDR format.",
-                                                   "format" : "pve-ipv4-config",
-                                                   "format_description" : "(IPv4/CIDR|dhcp|manual)",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "ip6" : {
-                                                   "description" : "IPv6 address in CIDR format.",
-                                                   "format" : "pve-ipv6-config",
-                                                   "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "mtu" : {
-                                                   "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
-                                                   "maximum" : 65535,
-                                                   "minimum" : 64,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "name" : {
-                                                   "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
-                                                   "format_description" : "string",
-                                                   "pattern" : "[-_.\\w\\d]+",
-                                                   "type" : "string"
-                                                },
-                                                "rate" : {
-                                                   "description" : "Apply rate limiting to the interface",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "tag" : {
-                                                   "description" : "VLAN tag for this interface.",
-                                                   "maximum" : 4094,
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "trunks" : {
-                                                   "description" : "VLAN ids to pass through the interface",
-                                                   "format_description" : "vlanid[;vlanid...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:\\d+(?:;\\d+)*)",
-                                                   "type" : "string"
-                                                },
-                                                "type" : {
-                                                   "description" : "Network interface type.",
-                                                   "enum" : [
-                                                      "veth"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "onboot" : {
-                                             "default" : 0,
-                                             "description" : "Specifies whether a container will be started during system bootup.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "ostype" : {
-                                             "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",
-                                                "opensuse",
-                                                "archlinux",
-                                                "alpine",
-                                                "gentoo",
-                                                "nixos",
-                                                "unmanaged"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "protection" : {
-                                             "default" : 0,
-                                             "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
-                                             "optional" : 1,
-                                             "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" : {
-                                                "acl" : {
-                                                   "description" : "Explicitly enable or disable ACL support.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mountoptions" : {
-                                                   "description" : "Extra mount options for rootfs/mps.",
-                                                   "format_description" : "opt[;opt...]",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
-                                                   "type" : "string"
-                                                },
-                                                "quota" : {
-                                                   "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Will include this volume to a storage replica job.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ro" : {
-                                                   "description" : "Read-only mount point",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Volume size (read only value).",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "default_key" : 1,
-                                                   "description" : "Volume, device or directory to mount into the container.",
-                                                   "format" : "pve-lxc-mp-string",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "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.",
-                                             "format" : "dns-name-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "startup" : {
-                                             "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                             "format" : "pve-startup-order",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                                          },
-                                          "swap" : {
-                                             "default" : 512,
-                                             "description" : "Amount of SWAP for the container in MB.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "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.",
-                                             "optional" : 1,
-                                             "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",
-                                             "maximum" : 6,
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - 6)"
-                                          },
-                                          "unprivileged" : {
-                                             "default" : 0,
-                                             "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "unused[n]" : {
-                                             "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                             "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" : "[volume=]<volume>"
-                                          },
-                                          "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.Config.Disk",
-                                             "VM.Config.CPU",
-                                             "VM.Config.Memory",
-                                             "VM.Config.Network",
-                                             "VM.Config.Options"
-                                          ],
-                                          "any",
-                                          1
-                                       ],
-                                       "description" : "non-volume mount points in rootfs and mp[n] are restricted to root at pam"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/config",
-                              "text" : "config"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get virtual machine status.",
-                                          "method" : "GET",
-                                          "name" : "vm_status",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "properties" : {
-                                                "cpus" : {
-                                                   "description" : "Maximum usable CPUs.",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "ha" : {
-                                                   "description" : "HA manager service status.",
-                                                   "type" : "object"
-                                                },
-                                                "lock" : {
-                                                   "description" : "The current config lock, if any.",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "maxdisk" : {
-                                                   "description" : "Root disk size in bytes.",
-                                                   "optional" : 1,
-                                                   "renderer" : "bytes",
-                                                   "type" : "integer"
-                                                },
-                                                "maxmem" : {
-                                                   "description" : "Maximum memory in bytes.",
-                                                   "optional" : 1,
-                                                   "renderer" : "bytes",
-                                                   "type" : "integer"
-                                                },
-                                                "maxswap" : {
-                                                   "description" : "Maximum SWAP memory in bytes.",
-                                                   "optional" : 1,
-                                                   "renderer" : "bytes",
-                                                   "type" : "integer"
-                                                },
-                                                "name" : {
-                                                   "description" : "Container name.",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "status" : {
-                                                   "description" : "LXC Container status.",
-                                                   "enum" : [
-                                                      "stopped",
-                                                      "running"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "tags" : {
-                                                   "description" : "The current configured tags, if any.",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "uptime" : {
-                                                   "description" : "Uptime.",
-                                                   "optional" : 1,
-                                                   "renderer" : "duration",
-                                                   "type" : "integer"
-                                                },
-                                                "vmid" : {
-                                                   "description" : "The (unique) ID of the VM.",
-                                                   "format" : "pve-vmid",
-                                                   "minimum" : 1,
-                                                   "type" : "integer"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/status/current",
-                                    "text" : "current"
-                                 },
-                                 {
-                                    "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",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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/start",
-                                    "text" : "start"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Stop the container. This will abruptly stop all processes running in the container.",
-                                          "method" : "POST",
-                                          "name" : "vm_stop",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "skiplock" : {
-                                                   "description" : "Ignore locks - only root is allowed to use this option.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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/stop",
-                                    "text" : "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",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "forceStop" : {
-                                                   "default" : 0,
-                                                   "description" : "Make sure the Container stops.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "timeout" : {
-                                                   "default" : 60,
-                                                   "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",
-                                                   "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/shutdown",
-                                    "text" : "shutdown"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Suspend the container. This is experimental.",
-                                          "method" : "POST",
-                                          "name" : "vm_suspend",
-                                          "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.PowerMgmt"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/status/suspend",
-                                    "text" : "suspend"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Resume the container.",
-                                          "method" : "POST",
-                                          "name" : "vm_resume",
-                                          "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.PowerMgmt"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "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",
-                                    "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" : {
-                                       "user" : "all"
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "subdir" : {
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{subdir}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/lxc/{vmid}/status",
-                              "text" : "status"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "POST" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Rollback LXC state to specified snapshot.",
-                                                "method" : "POST",
-                                                "name" : "rollback",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "start" : {
-                                                         "default" : 0,
-                                                         "description" : "Whether the container should get started after rolling back successfully",
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "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.Snapshot",
-                                                         "VM.Snapshot.Rollback"
-                                                      ],
-                                                      "any",
-                                                      1
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "description" : "the task ID.",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/rollback",
-                                          "text" : "rollback"
-                                       },
-                                       {
-                                          "info" : {
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Get snapshot configuration",
-                                                "method" : "GET",
-                                                "name" : "get_snapshot_config",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "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.Snapshot",
-                                                         "VM.Snapshot.Rollback",
-                                                         "VM.Audit"
-                                                      ],
-                                                      "any",
-                                                      1
-                                                   ]
-                                                },
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Update snapshot metadata.",
-                                                "method" : "PUT",
-                                                "name" : "update_snapshot_config",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "description" : {
-                                                         "description" : "A textual description or comment.",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "snapname" : {
-                                                         "description" : "The name of the snapshot.",
-                                                         "format" : "pve-configid",
-                                                         "maxLength" : 40,
-                                                         "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.Snapshot"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : "node",
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/config",
-                                          "text" : "config"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "DELETE" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Delete a LXC snapshot.",
-                                          "method" : "DELETE",
-                                          "name" : "delsnapshot",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "force" : {
-                                                   "description" : "For removal from config file, even if removing disk snapshots fails.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "snapname" : {
-                                                   "description" : "The name of the snapshot.",
-                                                   "format" : "pve-configid",
-                                                   "maxLength" : 40,
-                                                   "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.Snapshot"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "description" : "the task ID.",
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "",
-                                          "method" : "GET",
-                                          "name" : "snapshot_cmd_idx",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "snapname" : {
-                                                   "description" : "The name of the snapshot.",
-                                                   "format" : "pve-configid",
-                                                   "maxLength" : 40,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "vmid" : {
-                                                   "description" : "The (unique) ID of the VM.",
-                                                   "format" : "pve-vmid",
-                                                   "minimum" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "user" : "all"
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {},
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{cmd}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}",
-                                    "text" : "{snapname}"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "List all snapshots.",
-                                    "method" : "GET",
-                                    "name" : "list",
-                                    "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "description" : {
-                                                "description" : "Snapshot description.",
-                                                "type" : "string"
-                                             },
-                                             "name" : {
-                                                "description" : "Snapshot identifier. Value 'current' identifies the current VM.",
-                                                "type" : "string"
-                                             },
-                                             "parent" : {
-                                                "description" : "Parent snapshot identifier.",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             },
-                                             "snaptime" : {
-                                                "description" : "Snapshot creation time",
-                                                "optional" : 1,
-                                                "renderer" : "timestamp",
-                                                "type" : "integer"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Snapshot a container.",
-                                    "method" : "POST",
-                                    "name" : "snapshot",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "description" : {
-                                             "description" : "A textual description or comment.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "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.Snapshot"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/lxc/{vmid}/snapshot",
-                              "text" : "snapshot"
-                           },
-                           {
-                              "children" : [
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Delete rule.",
-                                                "method" : "DELETE",
-                                                "name" : "delete_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "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>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Get single rule data.",
-                                                "method" : "GET",
-                                                "name" : "get_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "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.Audit"
-                                                      ]
-                                                   ]
-                                                },
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "properties" : {
-                                                      "action" : {
-                                                         "type" : "string"
-                                                      },
-                                                      "comment" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "dest" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "dport" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "enable" : {
-                                                         "optional" : 1,
-                                                         "type" : "integer"
-                                                      },
-                                                      "icmp-type" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "iface" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "ipversion" : {
-                                                         "optional" : 1,
-                                                         "type" : "integer"
-                                                      },
-                                                      "log" : {
-                                                         "description" : "Log level for firewall rule",
-                                                         "enum" : [
-                                                            "emerg",
-                                                            "alert",
-                                                            "crit",
-                                                            "err",
-                                                            "warning",
-                                                            "notice",
-                                                            "info",
-                                                            "debug",
-                                                            "nolog"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "macro" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "pos" : {
-                                                         "type" : "integer"
-                                                      },
-                                                      "proto" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "source" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "sport" : {
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "type" : {
-                                                         "type" : "string"
-                                                      }
-                                                   },
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Modify rule data.",
-                                                "method" : "PUT",
-                                                "name" : "update_rule",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "action" : {
-                                                         "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                                         "maxLength" : 20,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "comment" : {
-                                                         "description" : "Descriptive comment.",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "delete" : {
-                                                         "description" : "A list of settings you want to delete.",
-                                                         "format" : "pve-configid-list",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "dport" : {
-                                                         "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                         "format" : "pve-fw-dport-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "enable" : {
-                                                         "description" : "Flag to enable/disable a rule.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "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",
-                                                         "maxLength" : 20,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "log" : {
-                                                         "description" : "Log level for firewall rule.",
-                                                         "enum" : [
-                                                            "emerg",
-                                                            "alert",
-                                                            "crit",
-                                                            "err",
-                                                            "warning",
-                                                            "notice",
-                                                            "info",
-                                                            "debug",
-                                                            "nolog"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "macro" : {
-                                                         "description" : "Use predefined standard macro.",
-                                                         "maxLength" : 128,
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "moveto" : {
-                                                         "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "type" : "integer",
-                                                         "typetext" : "<integer> (0 - N)"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "pos" : {
-                                                         "description" : "Update rule at position <pos>.",
-                                                         "minimum" : 0,
-                                                         "optional" : 1,
-                                                         "type" : "integer",
-                                                         "typetext" : "<integer> (0 - N)"
-                                                      },
-                                                      "proto" : {
-                                                         "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                                         "format" : "pve-fw-protocol-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "sport" : {
-                                                         "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                         "format" : "pve-fw-sport-spec",
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "type" : {
-                                                         "description" : "Rule type.",
-                                                         "enum" : [
-                                                            "in",
-                                                            "out",
-                                                            "group"
-                                                         ],
-                                                         "optional" : 1,
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "proxyto" : null,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}",
-                                          "text" : "{pos}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List rules.",
-                                          "method" : "GET",
-                                          "name" : "get_rules",
-                                          "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" : null,
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "pos" : {
-                                                      "type" : "integer"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{pos}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create new rule.",
-                                          "method" : "POST",
-                                          "name" : "create_rule",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "action" : {
-                                                   "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 2,
-                                                   "optional" : 0,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "comment" : {
-                                                   "description" : "Descriptive comment.",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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>"
-                                                },
-                                                "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>"
-                                                },
-                                                "dport" : {
-                                                   "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                   "format" : "pve-fw-dport-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "enable" : {
-                                                   "description" : "Flag to enable/disable a rule.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "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",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 2,
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "log" : {
-                                                   "description" : "Log level for firewall rule.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macro" : {
-                                                   "description" : "Use predefined standard macro.",
-                                                   "maxLength" : 128,
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "pos" : {
-                                                   "description" : "Update rule at position <pos>.",
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (0 - N)"
-                                                },
-                                                "proto" : {
-                                                   "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                                   "format" : "pve-fw-protocol-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "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>"
-                                                },
-                                                "sport" : {
-                                                   "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                                   "format" : "pve-fw-sport-spec",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "type" : {
-                                                   "description" : "Rule type.",
-                                                   "enum" : [
-                                                      "in",
-                                                      "out",
-                                                      "group"
-                                                   ],
-                                                   "optional" : 0,
-                                                   "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : null,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules",
-                                    "text" : "rules"
-                                 },
-                                 {
-                                    "children" : [
-                                       {
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Remove IP or Network alias.",
-                                                "method" : "DELETE",
-                                                "name" : "remove_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "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>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Read alias.",
-                                                "method" : "GET",
-                                                "name" : "read_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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"
-                                                      ]
-                                                   ]
-                                                },
-                                                "returns" : {
-                                                   "type" : "object"
-                                                }
-                                             },
-                                             "PUT" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Update IP or Network alias.",
-                                                "method" : "PUT",
-                                                "name" : "update_alias",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "cidr" : {
-                                                         "description" : "Network/IP specification in CIDR format.",
-                                                         "format" : "IPorCIDR",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "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>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "Alias name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "rename" : {
-                                                         "description" : "Rename an existing alias.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "optional" : 1,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 1,
-                                          "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}",
-                                          "text" : "{name}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List aliases",
-                                          "method" : "GET",
-                                          "name" : "get_aliases",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "cidr" : {
-                                                      "type" : "string"
-                                                   },
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
-                                                      "optional" : 0,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{name}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create IP or Network Alias.",
-                                          "method" : "POST",
-                                          "name" : "create_alias",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "cidr" : {
-                                                   "description" : "Network/IP specification in CIDR format.",
-                                                   "format" : "IPorCIDR",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "comment" : {
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "name" : {
-                                                   "description" : "Alias name.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases",
-                                    "text" : "aliases"
-                                 },
-                                 {
-                                    "children" : [
-                                       {
-                                          "children" : [
-                                             {
-                                                "info" : {
-                                                   "DELETE" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Remove IP or Network from IPSet.",
-                                                      "method" : "DELETE",
-                                                      "name" : "remove_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "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>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "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.Config.Network"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "null"
-                                                      }
-                                                   },
-                                                   "GET" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Read IP or Network settings from IPSet.",
-                                                      "method" : "GET",
-                                                      "name" : "read_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "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"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "object"
-                                                      }
-                                                   },
-                                                   "PUT" : {
-                                                      "allowtoken" : 1,
-                                                      "description" : "Update IP or Network settings",
-                                                      "method" : "PUT",
-                                                      "name" : "update_ip",
-                                                      "parameters" : {
-                                                         "additionalProperties" : 0,
-                                                         "properties" : {
-                                                            "cidr" : {
-                                                               "description" : "Network/IP specification in CIDR format.",
-                                                               "format" : "IPorCIDRorAlias",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "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>"
-                                                            },
-                                                            "name" : {
-                                                               "description" : "IP set name.",
-                                                               "maxLength" : 64,
-                                                               "minLength" : 2,
-                                                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                               "type" : "string"
-                                                            },
-                                                            "node" : {
-                                                               "description" : "The cluster node name.",
-                                                               "format" : "pve-node",
-                                                               "type" : "string",
-                                                               "typetext" : "<string>"
-                                                            },
-                                                            "nomatch" : {
-                                                               "optional" : 1,
-                                                               "type" : "boolean",
-                                                               "typetext" : "<boolean>"
-                                                            },
-                                                            "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.Config.Network"
-                                                            ]
-                                                         ]
-                                                      },
-                                                      "protected" : 1,
-                                                      "returns" : {
-                                                         "type" : "null"
-                                                      }
-                                                   }
-                                                },
-                                                "leaf" : 1,
-                                                "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}",
-                                                "text" : "{cidr}"
-                                             }
-                                          ],
-                                          "info" : {
-                                             "DELETE" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Delete IPSet",
-                                                "method" : "DELETE",
-                                                "name" : "delete_ipset",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "force" : {
-                                                         "description" : "Delete all members of the IPSet, if there are any.",
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             },
-                                             "GET" : {
-                                                "allowtoken" : 1,
-                                                "description" : "List IPSet content",
-                                                "method" : "GET",
-                                                "name" : "get_ipset",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "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"
-                                                      ]
-                                                   ]
-                                                },
-                                                "returns" : {
-                                                   "items" : {
-                                                      "properties" : {
-                                                         "cidr" : {
-                                                            "type" : "string"
-                                                         },
-                                                         "comment" : {
-                                                            "optional" : 1,
-                                                            "type" : "string"
-                                                         },
-                                                         "digest" : {
-                                                            "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                            "maxLength" : 40,
-                                                            "optional" : 0,
-                                                            "type" : "string"
-                                                         },
-                                                         "nomatch" : {
-                                                            "optional" : 1,
-                                                            "type" : "boolean"
-                                                         }
-                                                      },
-                                                      "type" : "object"
-                                                   },
-                                                   "links" : [
-                                                      {
-                                                         "href" : "{cidr}",
-                                                         "rel" : "child"
-                                                      }
-                                                   ],
-                                                   "type" : "array"
-                                                }
-                                             },
-                                             "POST" : {
-                                                "allowtoken" : 1,
-                                                "description" : "Add IP or Network to IPSet.",
-                                                "method" : "POST",
-                                                "name" : "create_ip",
-                                                "parameters" : {
-                                                   "additionalProperties" : 0,
-                                                   "properties" : {
-                                                      "cidr" : {
-                                                         "description" : "Network/IP specification in CIDR format.",
-                                                         "format" : "IPorCIDRorAlias",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "comment" : {
-                                                         "optional" : 1,
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "IP set name.",
-                                                         "maxLength" : 64,
-                                                         "minLength" : 2,
-                                                         "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                         "type" : "string"
-                                                      },
-                                                      "node" : {
-                                                         "description" : "The cluster node name.",
-                                                         "format" : "pve-node",
-                                                         "type" : "string",
-                                                         "typetext" : "<string>"
-                                                      },
-                                                      "nomatch" : {
-                                                         "optional" : 1,
-                                                         "type" : "boolean",
-                                                         "typetext" : "<boolean>"
-                                                      },
-                                                      "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.Config.Network"
-                                                      ]
-                                                   ]
-                                                },
-                                                "protected" : 1,
-                                                "returns" : {
-                                                   "type" : "null"
-                                                }
-                                             }
-                                          },
-                                          "leaf" : 0,
-                                          "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}",
-                                          "text" : "{name}"
-                                       }
-                                    ],
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List IPSets",
-                                          "method" : "GET",
-                                          "name" : "ipset_index",
-                                          "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
-                                                      "optional" : 0,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "description" : "IP set name.",
-                                                      "maxLength" : 64,
-                                                      "minLength" : 2,
-                                                      "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "links" : [
-                                                {
-                                                   "href" : "{name}",
-                                                   "rel" : "child"
-                                                }
-                                             ],
-                                             "type" : "array"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Create new IPSet",
-                                          "method" : "POST",
-                                          "name" : "create_ipset",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "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>"
-                                                },
-                                                "name" : {
-                                                   "description" : "IP set name.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "type" : "string"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "rename" : {
-                                                   "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
-                                                   "maxLength" : 64,
-                                                   "minLength" : 2,
-                                                   "optional" : 1,
-                                                   "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                                   "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 0,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset",
-                                    "text" : "ipset"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get VM firewall options.",
-                                          "method" : "GET",
-                                          "name" : "get_options",
-                                          "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" : {
-                                             "properties" : {
-                                                "dhcp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable DHCP.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "enable" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable/disable firewall rules.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ipfilter" : {
-                                                   "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "log_level_in" : {
-                                                   "description" : "Log level for incoming traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "log_level_out" : {
-                                                   "description" : "Log level for outgoing traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macfilter" : {
-                                                   "default" : 1,
-                                                   "description" : "Enable/disable MAC address filter.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ndp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "policy_in" : {
-                                                   "description" : "Input policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "policy_out" : {
-                                                   "description" : "Output policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "radv" : {
-                                                   "description" : "Allow sending Router Advertisement.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                }
-                                             },
-                                             "type" : "object"
-                                          }
-                                       },
-                                       "PUT" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Set Firewall options.",
-                                          "method" : "PUT",
-                                          "name" : "set_options",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "delete" : {
-                                                   "description" : "A list of settings you want to delete.",
-                                                   "format" : "pve-configid-list",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "dhcp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable DHCP.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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>"
-                                                },
-                                                "enable" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable/disable firewall rules.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "ipfilter" : {
-                                                   "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "log_level_in" : {
-                                                   "description" : "Log level for incoming traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "log_level_out" : {
-                                                   "description" : "Log level for outgoing traffic.",
-                                                   "enum" : [
-                                                      "emerg",
-                                                      "alert",
-                                                      "crit",
-                                                      "err",
-                                                      "warning",
-                                                      "notice",
-                                                      "info",
-                                                      "debug",
-                                                      "nolog"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "macfilter" : {
-                                                   "default" : 1,
-                                                   "description" : "Enable/disable MAC address filter.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "ndp" : {
-                                                   "default" : 0,
-                                                   "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "policy_in" : {
-                                                   "description" : "Input policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "policy_out" : {
-                                                   "description" : "Output policy.",
-                                                   "enum" : [
-                                                      "ACCEPT",
-                                                      "REJECT",
-                                                      "DROP"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "radv" : {
-                                                   "description" : "Allow sending Router Advertisement.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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.Config.Network"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/options",
-                                    "text" : "options"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Read firewall log",
-                                          "method" : "GET",
-                                          "name" : "log",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "limit" : {
-                                                   "minimum" : 0,
-                                                   "optional" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (0 - N)"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "start" : {
-                                                   "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.Console"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "n" : {
-                                                      "description" : "Line number",
-                                                      "type" : "integer"
-                                                   },
-                                                   "t" : {
-                                                      "description" : "Line text",
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/log",
-                                    "text" : "log"
-                                 },
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
-                                          "method" : "GET",
-                                          "name" : "refs",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "type" : {
-                                                   "description" : "Only list references of specified type.",
-                                                   "enum" : [
-                                                      "alias",
-                                                      "ipset"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "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"
-                                                ]
-                                             ]
-                                          },
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "comment" : {
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "type" : "string"
-                                                   },
-                                                   "type" : {
-                                                      "enum" : [
-                                                         "alias",
-                                                         "ipset"
-                                                      ],
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/lxc/{vmid}/firewall/refs",
-                                    "text" : "refs"
-                                 }
-                              ],
-                              "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>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "user" : "all"
-                                    },
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/lxc/{vmid}/firewall",
-                              "text" : "firewall"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read VM RRD statistics (returns PNG)",
-                                    "method" : "GET",
-                                    "name" : "rrd",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ds" : {
-                                             "description" : "The list of datasources you want to display.",
-                                             "format" : "pve-configid-list",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "properties" : {
-                                          "filename" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/rrd",
-                              "text" : "rrd"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read VM RRD statistics",
-                                    "method" : "GET",
-                                    "name" : "rrddata",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "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"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/rrddata",
-                              "text" : "rrddata"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Creates a TCP VNC proxy connections.",
-                                    "method" : "POST",
-                                    "name" : "vncproxy",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "height" : {
-                                             "description" : "sets the height of the console in pixels.",
-                                             "maximum" : 2160,
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - 2160)"
-                                          },
-                                          "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)"
-                                          },
-                                          "websocket" : {
-                                             "description" : "use websocket instead of standard VNC.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "width" : {
-                                             "description" : "sets the width of the console in pixels.",
-                                             "maximum" : 4096,
-                                             "minimum" : 16,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - 4096)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cert" : {
-                                             "type" : "string"
-                                          },
-                                          "port" : {
-                                             "type" : "integer"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          },
-                                          "user" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/vncproxy",
-                              "text" : "vncproxy"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Creates a TCP proxy connection.",
-                                    "method" : "POST",
-                                    "name" : "termproxy",
-                                    "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.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "port" : {
-                                             "type" : "integer"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          },
-                                          "user" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/termproxy",
-                              "text" : "termproxy"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Opens a weksocket for VNC traffic.",
-                                    "method" : "GET",
-                                    "name" : "vncwebsocket",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "port" : {
-                                             "description" : "Port number returned by previous vncproxy call.",
-                                             "maximum" : 5999,
-                                             "minimum" : 5900,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (5900 - 5999)"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "vncticket" : {
-                                             "description" : "Ticket from previous call to vncproxy.",
-                                             "maxLength" : 512,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Console"
-                                          ]
-                                       ],
-                                       "description" : "You also need to pass a valid ticket (vncticket)."
-                                    },
-                                    "returns" : {
-                                       "properties" : {
-                                          "port" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/vncwebsocket",
-                              "text" : "vncwebsocket"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Returns a SPICE configuration to connect to the CT.",
-                                    "method" : "POST",
-                                    "name" : "spiceproxy",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "proxy" : {
-                                             "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
-                                             "format" : "address",
-                                             "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.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "additionalProperties" : 1,
-                                       "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
-                                       "properties" : {
-                                          "host" : {
-                                             "type" : "string"
-                                          },
-                                          "password" : {
-                                             "type" : "string"
-                                          },
-                                          "proxy" : {
-                                             "type" : "string"
-                                          },
-                                          "tls-port" : {
-                                             "type" : "integer"
-                                          },
-                                          "type" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/spiceproxy",
-                              "text" : "spiceproxy"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migrate the container to another cluster. Creates a new migration task. EXPERIMENTAL feature!",
-                                    "method" : "POST",
-                                    "name" : "remote_migrate_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "migrate limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "delete" : {
-                                             "default" : 0,
-                                             "description" : "Delete the original CT and related data after successful migration. By default the original CT is kept on the source cluster in a stopped state.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "online" : {
-                                             "description" : "Use online/live migration.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "restart" : {
-                                             "description" : "Use restart migration",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "target-bridge" : {
-                                             "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
-                                             "format" : "bridge-pair-list",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-endpoint" : {
-                                             "description" : "Remote target endpoint",
-                                             "format" : "proxmox-remote",
-                                             "type" : "string",
-                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
-                                          },
-                                          "target-storage" : {
-                                             "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" : "storage-pair-list",
-                                             "optional" : 0,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "timeout" : {
-                                             "default" : 180,
-                                             "description" : "Timeout in seconds for shutdown for restart migration",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer>"
-                                          },
-                                          "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" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/remote_migrate",
-                              "text" : "remote_migrate"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migrate the container to another node. Creates a new migration task.",
-                                    "method" : "POST",
-                                    "name" : "migrate_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "migrate limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "online" : {
-                                             "description" : "Use online/live migration.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "restart" : {
-                                             "description" : "Use restart migration",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "target" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-storage" : {
-                                             "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" : "storage-pair-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "timeout" : {
-                                             "default" : 180,
-                                             "description" : "Timeout in seconds for shutdown for restart migration",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer>"
-                                          },
-                                          "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" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/migrate",
-                              "text" : "migrate"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Check if feature for virtual machine is available.",
-                                    "method" : "GET",
-                                    "name" : "vm_feature",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "feature" : {
-                                             "description" : "Feature to check.",
-                                             "enum" : [
-                                                "snapshot",
-                                                "clone",
-                                                "copy"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "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.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "hasFeature" : {
-                                             "type" : "boolean"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/feature",
-                              "text" : "feature"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create a Template.",
-                                    "method" : "POST",
-                                    "name" : "template",
-                                    "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.Allocate"
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/template",
-                              "text" : "template"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create a container clone/copy",
-                                    "method" : "POST",
-                                    "name" : "clone_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "clone limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "description" : {
-                                             "description" : "Description for the new CT.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "full" : {
-                                             "description" : "Create a full copy of all disks. This is always done when you clone a normal CT. For CT templates, we try to create a linked clone by default.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "hostname" : {
-                                             "description" : "Set a hostname for the new CT.",
-                                             "format" : "dns-name",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "newid" : {
-                                             "description" : "VMID for the clone.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pool" : {
-                                             "description" : "Add the new CT to the specified pool.",
-                                             "format" : "pve-poolid",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "snapname" : {
-                                             "description" : "The name of the snapshot.",
-                                             "format" : "pve-configid",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "storage" : {
-                                             "description" : "Target storage for full clone.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target" : {
-                                             "description" : "Target node. Only allowed if the original VM is on shared storage.",
-                                             "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" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Clone"
-                                             ]
-                                          ],
-                                          [
-                                             "or",
-                                             [
-                                                "perm",
-                                                "/vms/{newid}",
-                                                [
-                                                   "VM.Allocate"
-                                                ]
-                                             ],
-                                             [
-                                                "perm",
-                                                "/pool/{pool}",
-                                                [
-                                                   "VM.Allocate"
-                                                ],
-                                                "require_param",
-                                                "pool"
-                                             ]
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/clone",
-                              "text" : "clone"
-                           },
-                           {
-                              "info" : {
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Resize a container mount point.",
-                                    "method" : "PUT",
-                                    "name" : "resize_vm",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "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>"
-                                          },
-                                          "disk" : {
-                                             "description" : "The disk you want to resize.",
-                                             "enum" : [
-                                                "rootfs",
-                                                "mp0",
-                                                "mp1",
-                                                "mp2",
-                                                "mp3",
-                                                "mp4",
-                                                "mp5",
-                                                "mp6",
-                                                "mp7",
-                                                "mp8",
-                                                "mp9",
-                                                "mp10",
-                                                "mp11",
-                                                "mp12",
-                                                "mp13",
-                                                "mp14",
-                                                "mp15",
-                                                "mp16",
-                                                "mp17",
-                                                "mp18",
-                                                "mp19",
-                                                "mp20",
-                                                "mp21",
-                                                "mp22",
-                                                "mp23",
-                                                "mp24",
-                                                "mp25",
-                                                "mp26",
-                                                "mp27",
-                                                "mp28",
-                                                "mp29",
-                                                "mp30",
-                                                "mp31",
-                                                "mp32",
-                                                "mp33",
-                                                "mp34",
-                                                "mp35",
-                                                "mp36",
-                                                "mp37",
-                                                "mp38",
-                                                "mp39",
-                                                "mp40",
-                                                "mp41",
-                                                "mp42",
-                                                "mp43",
-                                                "mp44",
-                                                "mp45",
-                                                "mp46",
-                                                "mp47",
-                                                "mp48",
-                                                "mp49",
-                                                "mp50",
-                                                "mp51",
-                                                "mp52",
-                                                "mp53",
-                                                "mp54",
-                                                "mp55",
-                                                "mp56",
-                                                "mp57",
-                                                "mp58",
-                                                "mp59",
-                                                "mp60",
-                                                "mp61",
-                                                "mp62",
-                                                "mp63",
-                                                "mp64",
-                                                "mp65",
-                                                "mp66",
-                                                "mp67",
-                                                "mp68",
-                                                "mp69",
-                                                "mp70",
-                                                "mp71",
-                                                "mp72",
-                                                "mp73",
-                                                "mp74",
-                                                "mp75",
-                                                "mp76",
-                                                "mp77",
-                                                "mp78",
-                                                "mp79",
-                                                "mp80",
-                                                "mp81",
-                                                "mp82",
-                                                "mp83",
-                                                "mp84",
-                                                "mp85",
-                                                "mp86",
-                                                "mp87",
-                                                "mp88",
-                                                "mp89",
-                                                "mp90",
-                                                "mp91",
-                                                "mp92",
-                                                "mp93",
-                                                "mp94",
-                                                "mp95",
-                                                "mp96",
-                                                "mp97",
-                                                "mp98",
-                                                "mp99",
-                                                "mp100",
-                                                "mp101",
-                                                "mp102",
-                                                "mp103",
-                                                "mp104",
-                                                "mp105",
-                                                "mp106",
-                                                "mp107",
-                                                "mp108",
-                                                "mp109",
-                                                "mp110",
-                                                "mp111",
-                                                "mp112",
-                                                "mp113",
-                                                "mp114",
-                                                "mp115",
-                                                "mp116",
-                                                "mp117",
-                                                "mp118",
-                                                "mp119",
-                                                "mp120",
-                                                "mp121",
-                                                "mp122",
-                                                "mp123",
-                                                "mp124",
-                                                "mp125",
-                                                "mp126",
-                                                "mp127",
-                                                "mp128",
-                                                "mp129",
-                                                "mp130",
-                                                "mp131",
-                                                "mp132",
-                                                "mp133",
-                                                "mp134",
-                                                "mp135",
-                                                "mp136",
-                                                "mp137",
-                                                "mp138",
-                                                "mp139",
-                                                "mp140",
-                                                "mp141",
-                                                "mp142",
-                                                "mp143",
-                                                "mp144",
-                                                "mp145",
-                                                "mp146",
-                                                "mp147",
-                                                "mp148",
-                                                "mp149",
-                                                "mp150",
-                                                "mp151",
-                                                "mp152",
-                                                "mp153",
-                                                "mp154",
-                                                "mp155",
-                                                "mp156",
-                                                "mp157",
-                                                "mp158",
-                                                "mp159",
-                                                "mp160",
-                                                "mp161",
-                                                "mp162",
-                                                "mp163",
-                                                "mp164",
-                                                "mp165",
-                                                "mp166",
-                                                "mp167",
-                                                "mp168",
-                                                "mp169",
-                                                "mp170",
-                                                "mp171",
-                                                "mp172",
-                                                "mp173",
-                                                "mp174",
-                                                "mp175",
-                                                "mp176",
-                                                "mp177",
-                                                "mp178",
-                                                "mp179",
-                                                "mp180",
-                                                "mp181",
-                                                "mp182",
-                                                "mp183",
-                                                "mp184",
-                                                "mp185",
-                                                "mp186",
-                                                "mp187",
-                                                "mp188",
-                                                "mp189",
-                                                "mp190",
-                                                "mp191",
-                                                "mp192",
-                                                "mp193",
-                                                "mp194",
-                                                "mp195",
-                                                "mp196",
-                                                "mp197",
-                                                "mp198",
-                                                "mp199",
-                                                "mp200",
-                                                "mp201",
-                                                "mp202",
-                                                "mp203",
-                                                "mp204",
-                                                "mp205",
-                                                "mp206",
-                                                "mp207",
-                                                "mp208",
-                                                "mp209",
-                                                "mp210",
-                                                "mp211",
-                                                "mp212",
-                                                "mp213",
-                                                "mp214",
-                                                "mp215",
-                                                "mp216",
-                                                "mp217",
-                                                "mp218",
-                                                "mp219",
-                                                "mp220",
-                                                "mp221",
-                                                "mp222",
-                                                "mp223",
-                                                "mp224",
-                                                "mp225",
-                                                "mp226",
-                                                "mp227",
-                                                "mp228",
-                                                "mp229",
-                                                "mp230",
-                                                "mp231",
-                                                "mp232",
-                                                "mp233",
-                                                "mp234",
-                                                "mp235",
-                                                "mp236",
-                                                "mp237",
-                                                "mp238",
-                                                "mp239",
-                                                "mp240",
-                                                "mp241",
-                                                "mp242",
-                                                "mp243",
-                                                "mp244",
-                                                "mp245",
-                                                "mp246",
-                                                "mp247",
-                                                "mp248",
-                                                "mp249",
-                                                "mp250",
-                                                "mp251",
-                                                "mp252",
-                                                "mp253",
-                                                "mp254",
-                                                "mp255"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "size" : {
-                                             "description" : "The new size. With the '+' sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.",
-                                             "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?",
-                                             "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.Config.Disk"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "the task ID.",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/resize",
-                              "text" : "resize"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Move a rootfs-/mp-volume to a different storage or to a different container.",
-                                    "method" : "POST",
-                                    "name" : "move_volume",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bwlimit" : {
-                                             "default" : "clone limit from datacenter or storage config",
-                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                             "minimum" : "0",
-                                             "optional" : 1,
-                                             "type" : "number",
-                                             "typetext" : "<number> (0 - N)"
-                                          },
-                                          "delete" : {
-                                             "default" : 0,
-                                             "description" : "Delete the original volume after successful copy. By default the original is kept as an unused volume entry.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 \" .\n\t\t    \"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>"
-                                          },
-                                          "storage" : {
-                                             "description" : "Target Storage.",
-                                             "format" : "pve-storage-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-digest" : {
-                                             "description" : "Prevent changes if current configuration file of the target \" .\n\t\t    \"container has a different SHA1 digest. This can be used to prevent \" .\n\t\t    \"concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "target-vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "target-volume" : {
-                                             "description" : "The config key the volume will be moved to. Default is the source volume key.",
-                                             "enum" : [
-                                                "rootfs",
-                                                "mp0",
-                                                "mp1",
-                                                "mp2",
-                                                "mp3",
-                                                "mp4",
-                                                "mp5",
-                                                "mp6",
-                                                "mp7",
-                                                "mp8",
-                                                "mp9",
-                                                "mp10",
-                                                "mp11",
-                                                "mp12",
-                                                "mp13",
-                                                "mp14",
-                                                "mp15",
-                                                "mp16",
-                                                "mp17",
-                                                "mp18",
-                                                "mp19",
-                                                "mp20",
-                                                "mp21",
-                                                "mp22",
-                                                "mp23",
-                                                "mp24",
-                                                "mp25",
-                                                "mp26",
-                                                "mp27",
-                                                "mp28",
-                                                "mp29",
-                                                "mp30",
-                                                "mp31",
-                                                "mp32",
-                                                "mp33",
-                                                "mp34",
-                                                "mp35",
-                                                "mp36",
-                                                "mp37",
-                                                "mp38",
-                                                "mp39",
-                                                "mp40",
-                                                "mp41",
-                                                "mp42",
-                                                "mp43",
-                                                "mp44",
-                                                "mp45",
-                                                "mp46",
-                                                "mp47",
-                                                "mp48",
-                                                "mp49",
-                                                "mp50",
-                                                "mp51",
-                                                "mp52",
-                                                "mp53",
-                                                "mp54",
-                                                "mp55",
-                                                "mp56",
-                                                "mp57",
-                                                "mp58",
-                                                "mp59",
-                                                "mp60",
-                                                "mp61",
-                                                "mp62",
-                                                "mp63",
-                                                "mp64",
-                                                "mp65",
-                                                "mp66",
-                                                "mp67",
-                                                "mp68",
-                                                "mp69",
-                                                "mp70",
-                                                "mp71",
-                                                "mp72",
-                                                "mp73",
-                                                "mp74",
-                                                "mp75",
-                                                "mp76",
-                                                "mp77",
-                                                "mp78",
-                                                "mp79",
-                                                "mp80",
-                                                "mp81",
-                                                "mp82",
-                                                "mp83",
-                                                "mp84",
-                                                "mp85",
-                                                "mp86",
-                                                "mp87",
-                                                "mp88",
-                                                "mp89",
-                                                "mp90",
-                                                "mp91",
-                                                "mp92",
-                                                "mp93",
-                                                "mp94",
-                                                "mp95",
-                                                "mp96",
-                                                "mp97",
-                                                "mp98",
-                                                "mp99",
-                                                "mp100",
-                                                "mp101",
-                                                "mp102",
-                                                "mp103",
-                                                "mp104",
-                                                "mp105",
-                                                "mp106",
-                                                "mp107",
-                                                "mp108",
-                                                "mp109",
-                                                "mp110",
-                                                "mp111",
-                                                "mp112",
-                                                "mp113",
-                                                "mp114",
-                                                "mp115",
-                                                "mp116",
-                                                "mp117",
-                                                "mp118",
-                                                "mp119",
-                                                "mp120",
-                                                "mp121",
-                                                "mp122",
-                                                "mp123",
-                                                "mp124",
-                                                "mp125",
-                                                "mp126",
-                                                "mp127",
-                                                "mp128",
-                                                "mp129",
-                                                "mp130",
-                                                "mp131",
-                                                "mp132",
-                                                "mp133",
-                                                "mp134",
-                                                "mp135",
-                                                "mp136",
-                                                "mp137",
-                                                "mp138",
-                                                "mp139",
-                                                "mp140",
-                                                "mp141",
-                                                "mp142",
-                                                "mp143",
-                                                "mp144",
-                                                "mp145",
-                                                "mp146",
-                                                "mp147",
-                                                "mp148",
-                                                "mp149",
-                                                "mp150",
-                                                "mp151",
-                                                "mp152",
-                                                "mp153",
-                                                "mp154",
-                                                "mp155",
-                                                "mp156",
-                                                "mp157",
-                                                "mp158",
-                                                "mp159",
-                                                "mp160",
-                                                "mp161",
-                                                "mp162",
-                                                "mp163",
-                                                "mp164",
-                                                "mp165",
-                                                "mp166",
-                                                "mp167",
-                                                "mp168",
-                                                "mp169",
-                                                "mp170",
-                                                "mp171",
-                                                "mp172",
-                                                "mp173",
-                                                "mp174",
-                                                "mp175",
-                                                "mp176",
-                                                "mp177",
-                                                "mp178",
-                                                "mp179",
-                                                "mp180",
-                                                "mp181",
-                                                "mp182",
-                                                "mp183",
-                                                "mp184",
-                                                "mp185",
-                                                "mp186",
-                                                "mp187",
-                                                "mp188",
-                                                "mp189",
-                                                "mp190",
-                                                "mp191",
-                                                "mp192",
-                                                "mp193",
-                                                "mp194",
-                                                "mp195",
-                                                "mp196",
-                                                "mp197",
-                                                "mp198",
-                                                "mp199",
-                                                "mp200",
-                                                "mp201",
-                                                "mp202",
-                                                "mp203",
-                                                "mp204",
-                                                "mp205",
-                                                "mp206",
-                                                "mp207",
-                                                "mp208",
-                                                "mp209",
-                                                "mp210",
-                                                "mp211",
-                                                "mp212",
-                                                "mp213",
-                                                "mp214",
-                                                "mp215",
-                                                "mp216",
-                                                "mp217",
-                                                "mp218",
-                                                "mp219",
-                                                "mp220",
-                                                "mp221",
-                                                "mp222",
-                                                "mp223",
-                                                "mp224",
-                                                "mp225",
-                                                "mp226",
-                                                "mp227",
-                                                "mp228",
-                                                "mp229",
-                                                "mp230",
-                                                "mp231",
-                                                "mp232",
-                                                "mp233",
-                                                "mp234",
-                                                "mp235",
-                                                "mp236",
-                                                "mp237",
-                                                "mp238",
-                                                "mp239",
-                                                "mp240",
-                                                "mp241",
-                                                "mp242",
-                                                "mp243",
-                                                "mp244",
-                                                "mp245",
-                                                "mp246",
-                                                "mp247",
-                                                "mp248",
-                                                "mp249",
-                                                "mp250",
-                                                "mp251",
-                                                "mp252",
-                                                "mp253",
-                                                "mp254",
-                                                "mp255",
-                                                "unused0",
-                                                "unused1",
-                                                "unused2",
-                                                "unused3",
-                                                "unused4",
-                                                "unused5",
-                                                "unused6",
-                                                "unused7",
-                                                "unused8",
-                                                "unused9",
-                                                "unused10",
-                                                "unused11",
-                                                "unused12",
-                                                "unused13",
-                                                "unused14",
-                                                "unused15",
-                                                "unused16",
-                                                "unused17",
-                                                "unused18",
-                                                "unused19",
-                                                "unused20",
-                                                "unused21",
-                                                "unused22",
-                                                "unused23",
-                                                "unused24",
-                                                "unused25",
-                                                "unused26",
-                                                "unused27",
-                                                "unused28",
-                                                "unused29",
-                                                "unused30",
-                                                "unused31",
-                                                "unused32",
-                                                "unused33",
-                                                "unused34",
-                                                "unused35",
-                                                "unused36",
-                                                "unused37",
-                                                "unused38",
-                                                "unused39",
-                                                "unused40",
-                                                "unused41",
-                                                "unused42",
-                                                "unused43",
-                                                "unused44",
-                                                "unused45",
-                                                "unused46",
-                                                "unused47",
-                                                "unused48",
-                                                "unused49",
-                                                "unused50",
-                                                "unused51",
-                                                "unused52",
-                                                "unused53",
-                                                "unused54",
-                                                "unused55",
-                                                "unused56",
-                                                "unused57",
-                                                "unused58",
-                                                "unused59",
-                                                "unused60",
-                                                "unused61",
-                                                "unused62",
-                                                "unused63",
-                                                "unused64",
-                                                "unused65",
-                                                "unused66",
-                                                "unused67",
-                                                "unused68",
-                                                "unused69",
-                                                "unused70",
-                                                "unused71",
-                                                "unused72",
-                                                "unused73",
-                                                "unused74",
-                                                "unused75",
-                                                "unused76",
-                                                "unused77",
-                                                "unused78",
-                                                "unused79",
-                                                "unused80",
-                                                "unused81",
-                                                "unused82",
-                                                "unused83",
-                                                "unused84",
-                                                "unused85",
-                                                "unused86",
-                                                "unused87",
-                                                "unused88",
-                                                "unused89",
-                                                "unused90",
-                                                "unused91",
-                                                "unused92",
-                                                "unused93",
-                                                "unused94",
-                                                "unused95",
-                                                "unused96",
-                                                "unused97",
-                                                "unused98",
-                                                "unused99",
-                                                "unused100",
-                                                "unused101",
-                                                "unused102",
-                                                "unused103",
-                                                "unused104",
-                                                "unused105",
-                                                "unused106",
-                                                "unused107",
-                                                "unused108",
-                                                "unused109",
-                                                "unused110",
-                                                "unused111",
-                                                "unused112",
-                                                "unused113",
-                                                "unused114",
-                                                "unused115",
-                                                "unused116",
-                                                "unused117",
-                                                "unused118",
-                                                "unused119",
-                                                "unused120",
-                                                "unused121",
-                                                "unused122",
-                                                "unused123",
-                                                "unused124",
-                                                "unused125",
-                                                "unused126",
-                                                "unused127",
-                                                "unused128",
-                                                "unused129",
-                                                "unused130",
-                                                "unused131",
-                                                "unused132",
-                                                "unused133",
-                                                "unused134",
-                                                "unused135",
-                                                "unused136",
-                                                "unused137",
-                                                "unused138",
-                                                "unused139",
-                                                "unused140",
-                                                "unused141",
-                                                "unused142",
-                                                "unused143",
-                                                "unused144",
-                                                "unused145",
-                                                "unused146",
-                                                "unused147",
-                                                "unused148",
-                                                "unused149",
-                                                "unused150",
-                                                "unused151",
-                                                "unused152",
-                                                "unused153",
-                                                "unused154",
-                                                "unused155",
-                                                "unused156",
-                                                "unused157",
-                                                "unused158",
-                                                "unused159",
-                                                "unused160",
-                                                "unused161",
-                                                "unused162",
-                                                "unused163",
-                                                "unused164",
-                                                "unused165",
-                                                "unused166",
-                                                "unused167",
-                                                "unused168",
-                                                "unused169",
-                                                "unused170",
-                                                "unused171",
-                                                "unused172",
-                                                "unused173",
-                                                "unused174",
-                                                "unused175",
-                                                "unused176",
-                                                "unused177",
-                                                "unused178",
-                                                "unused179",
-                                                "unused180",
-                                                "unused181",
-                                                "unused182",
-                                                "unused183",
-                                                "unused184",
-                                                "unused185",
-                                                "unused186",
-                                                "unused187",
-                                                "unused188",
-                                                "unused189",
-                                                "unused190",
-                                                "unused191",
-                                                "unused192",
-                                                "unused193",
-                                                "unused194",
-                                                "unused195",
-                                                "unused196",
-                                                "unused197",
-                                                "unused198",
-                                                "unused199",
-                                                "unused200",
-                                                "unused201",
-                                                "unused202",
-                                                "unused203",
-                                                "unused204",
-                                                "unused205",
-                                                "unused206",
-                                                "unused207",
-                                                "unused208",
-                                                "unused209",
-                                                "unused210",
-                                                "unused211",
-                                                "unused212",
-                                                "unused213",
-                                                "unused214",
-                                                "unused215",
-                                                "unused216",
-                                                "unused217",
-                                                "unused218",
-                                                "unused219",
-                                                "unused220",
-                                                "unused221",
-                                                "unused222",
-                                                "unused223",
-                                                "unused224",
-                                                "unused225",
-                                                "unused226",
-                                                "unused227",
-                                                "unused228",
-                                                "unused229",
-                                                "unused230",
-                                                "unused231",
-                                                "unused232",
-                                                "unused233",
-                                                "unused234",
-                                                "unused235",
-                                                "unused236",
-                                                "unused237",
-                                                "unused238",
-                                                "unused239",
-                                                "unused240",
-                                                "unused241",
-                                                "unused242",
-                                                "unused243",
-                                                "unused244",
-                                                "unused245",
-                                                "unused246",
-                                                "unused247",
-                                                "unused248",
-                                                "unused249",
-                                                "unused250",
-                                                "unused251",
-                                                "unused252",
-                                                "unused253",
-                                                "unused254",
-                                                "unused255"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          },
-                                          "volume" : {
-                                             "description" : "Volume which will be moved.",
-                                             "enum" : [
-                                                "rootfs",
-                                                "mp0",
-                                                "mp1",
-                                                "mp2",
-                                                "mp3",
-                                                "mp4",
-                                                "mp5",
-                                                "mp6",
-                                                "mp7",
-                                                "mp8",
-                                                "mp9",
-                                                "mp10",
-                                                "mp11",
-                                                "mp12",
-                                                "mp13",
-                                                "mp14",
-                                                "mp15",
-                                                "mp16",
-                                                "mp17",
-                                                "mp18",
-                                                "mp19",
-                                                "mp20",
-                                                "mp21",
-                                                "mp22",
-                                                "mp23",
-                                                "mp24",
-                                                "mp25",
-                                                "mp26",
-                                                "mp27",
-                                                "mp28",
-                                                "mp29",
-                                                "mp30",
-                                                "mp31",
-                                                "mp32",
-                                                "mp33",
-                                                "mp34",
-                                                "mp35",
-                                                "mp36",
-                                                "mp37",
-                                                "mp38",
-                                                "mp39",
-                                                "mp40",
-                                                "mp41",
-                                                "mp42",
-                                                "mp43",
-                                                "mp44",
-                                                "mp45",
-                                                "mp46",
-                                                "mp47",
-                                                "mp48",
-                                                "mp49",
-                                                "mp50",
-                                                "mp51",
-                                                "mp52",
-                                                "mp53",
-                                                "mp54",
-                                                "mp55",
-                                                "mp56",
-                                                "mp57",
-                                                "mp58",
-                                                "mp59",
-                                                "mp60",
-                                                "mp61",
-                                                "mp62",
-                                                "mp63",
-                                                "mp64",
-                                                "mp65",
-                                                "mp66",
-                                                "mp67",
-                                                "mp68",
-                                                "mp69",
-                                                "mp70",
-                                                "mp71",
-                                                "mp72",
-                                                "mp73",
-                                                "mp74",
-                                                "mp75",
-                                                "mp76",
-                                                "mp77",
-                                                "mp78",
-                                                "mp79",
-                                                "mp80",
-                                                "mp81",
-                                                "mp82",
-                                                "mp83",
-                                                "mp84",
-                                                "mp85",
-                                                "mp86",
-                                                "mp87",
-                                                "mp88",
-                                                "mp89",
-                                                "mp90",
-                                                "mp91",
-                                                "mp92",
-                                                "mp93",
-                                                "mp94",
-                                                "mp95",
-                                                "mp96",
-                                                "mp97",
-                                                "mp98",
-                                                "mp99",
-                                                "mp100",
-                                                "mp101",
-                                                "mp102",
-                                                "mp103",
-                                                "mp104",
-                                                "mp105",
-                                                "mp106",
-                                                "mp107",
-                                                "mp108",
-                                                "mp109",
-                                                "mp110",
-                                                "mp111",
-                                                "mp112",
-                                                "mp113",
-                                                "mp114",
-                                                "mp115",
-                                                "mp116",
-                                                "mp117",
-                                                "mp118",
-                                                "mp119",
-                                                "mp120",
-                                                "mp121",
-                                                "mp122",
-                                                "mp123",
-                                                "mp124",
-                                                "mp125",
-                                                "mp126",
-                                                "mp127",
-                                                "mp128",
-                                                "mp129",
-                                                "mp130",
-                                                "mp131",
-                                                "mp132",
-                                                "mp133",
-                                                "mp134",
-                                                "mp135",
-                                                "mp136",
-                                                "mp137",
-                                                "mp138",
-                                                "mp139",
-                                                "mp140",
-                                                "mp141",
-                                                "mp142",
-                                                "mp143",
-                                                "mp144",
-                                                "mp145",
-                                                "mp146",
-                                                "mp147",
-                                                "mp148",
-                                                "mp149",
-                                                "mp150",
-                                                "mp151",
-                                                "mp152",
-                                                "mp153",
-                                                "mp154",
-                                                "mp155",
-                                                "mp156",
-                                                "mp157",
-                                                "mp158",
-                                                "mp159",
-                                                "mp160",
-                                                "mp161",
-                                                "mp162",
-                                                "mp163",
-                                                "mp164",
-                                                "mp165",
-                                                "mp166",
-                                                "mp167",
-                                                "mp168",
-                                                "mp169",
-                                                "mp170",
-                                                "mp171",
-                                                "mp172",
-                                                "mp173",
-                                                "mp174",
-                                                "mp175",
-                                                "mp176",
-                                                "mp177",
-                                                "mp178",
-                                                "mp179",
-                                                "mp180",
-                                                "mp181",
-                                                "mp182",
-                                                "mp183",
-                                                "mp184",
-                                                "mp185",
-                                                "mp186",
-                                                "mp187",
-                                                "mp188",
-                                                "mp189",
-                                                "mp190",
-                                                "mp191",
-                                                "mp192",
-                                                "mp193",
-                                                "mp194",
-                                                "mp195",
-                                                "mp196",
-                                                "mp197",
-                                                "mp198",
-                                                "mp199",
-                                                "mp200",
-                                                "mp201",
-                                                "mp202",
-                                                "mp203",
-                                                "mp204",
-                                                "mp205",
-                                                "mp206",
-                                                "mp207",
-                                                "mp208",
-                                                "mp209",
-                                                "mp210",
-                                                "mp211",
-                                                "mp212",
-                                                "mp213",
-                                                "mp214",
-                                                "mp215",
-                                                "mp216",
-                                                "mp217",
-                                                "mp218",
-                                                "mp219",
-                                                "mp220",
-                                                "mp221",
-                                                "mp222",
-                                                "mp223",
-                                                "mp224",
-                                                "mp225",
-                                                "mp226",
-                                                "mp227",
-                                                "mp228",
-                                                "mp229",
-                                                "mp230",
-                                                "mp231",
-                                                "mp232",
-                                                "mp233",
-                                                "mp234",
-                                                "mp235",
-                                                "mp236",
-                                                "mp237",
-                                                "mp238",
-                                                "mp239",
-                                                "mp240",
-                                                "mp241",
-                                                "mp242",
-                                                "mp243",
-                                                "mp244",
-                                                "mp245",
-                                                "mp246",
-                                                "mp247",
-                                                "mp248",
-                                                "mp249",
-                                                "mp250",
-                                                "mp251",
-                                                "mp252",
-                                                "mp253",
-                                                "mp254",
-                                                "mp255",
-                                                "unused0",
-                                                "unused1",
-                                                "unused2",
-                                                "unused3",
-                                                "unused4",
-                                                "unused5",
-                                                "unused6",
-                                                "unused7",
-                                                "unused8",
-                                                "unused9",
-                                                "unused10",
-                                                "unused11",
-                                                "unused12",
-                                                "unused13",
-                                                "unused14",
-                                                "unused15",
-                                                "unused16",
-                                                "unused17",
-                                                "unused18",
-                                                "unused19",
-                                                "unused20",
-                                                "unused21",
-                                                "unused22",
-                                                "unused23",
-                                                "unused24",
-                                                "unused25",
-                                                "unused26",
-                                                "unused27",
-                                                "unused28",
-                                                "unused29",
-                                                "unused30",
-                                                "unused31",
-                                                "unused32",
-                                                "unused33",
-                                                "unused34",
-                                                "unused35",
-                                                "unused36",
-                                                "unused37",
-                                                "unused38",
-                                                "unused39",
-                                                "unused40",
-                                                "unused41",
-                                                "unused42",
-                                                "unused43",
-                                                "unused44",
-                                                "unused45",
-                                                "unused46",
-                                                "unused47",
-                                                "unused48",
-                                                "unused49",
-                                                "unused50",
-                                                "unused51",
-                                                "unused52",
-                                                "unused53",
-                                                "unused54",
-                                                "unused55",
-                                                "unused56",
-                                                "unused57",
-                                                "unused58",
-                                                "unused59",
-                                                "unused60",
-                                                "unused61",
-                                                "unused62",
-                                                "unused63",
-                                                "unused64",
-                                                "unused65",
-                                                "unused66",
-                                                "unused67",
-                                                "unused68",
-                                                "unused69",
-                                                "unused70",
-                                                "unused71",
-                                                "unused72",
-                                                "unused73",
-                                                "unused74",
-                                                "unused75",
-                                                "unused76",
-                                                "unused77",
-                                                "unused78",
-                                                "unused79",
-                                                "unused80",
-                                                "unused81",
-                                                "unused82",
-                                                "unused83",
-                                                "unused84",
-                                                "unused85",
-                                                "unused86",
-                                                "unused87",
-                                                "unused88",
-                                                "unused89",
-                                                "unused90",
-                                                "unused91",
-                                                "unused92",
-                                                "unused93",
-                                                "unused94",
-                                                "unused95",
-                                                "unused96",
-                                                "unused97",
-                                                "unused98",
-                                                "unused99",
-                                                "unused100",
-                                                "unused101",
-                                                "unused102",
-                                                "unused103",
-                                                "unused104",
-                                                "unused105",
-                                                "unused106",
-                                                "unused107",
-                                                "unused108",
-                                                "unused109",
-                                                "unused110",
-                                                "unused111",
-                                                "unused112",
-                                                "unused113",
-                                                "unused114",
-                                                "unused115",
-                                                "unused116",
-                                                "unused117",
-                                                "unused118",
-                                                "unused119",
-                                                "unused120",
-                                                "unused121",
-                                                "unused122",
-                                                "unused123",
-                                                "unused124",
-                                                "unused125",
-                                                "unused126",
-                                                "unused127",
-                                                "unused128",
-                                                "unused129",
-                                                "unused130",
-                                                "unused131",
-                                                "unused132",
-                                                "unused133",
-                                                "unused134",
-                                                "unused135",
-                                                "unused136",
-                                                "unused137",
-                                                "unused138",
-                                                "unused139",
-                                                "unused140",
-                                                "unused141",
-                                                "unused142",
-                                                "unused143",
-                                                "unused144",
-                                                "unused145",
-                                                "unused146",
-                                                "unused147",
-                                                "unused148",
-                                                "unused149",
-                                                "unused150",
-                                                "unused151",
-                                                "unused152",
-                                                "unused153",
-                                                "unused154",
-                                                "unused155",
-                                                "unused156",
-                                                "unused157",
-                                                "unused158",
-                                                "unused159",
-                                                "unused160",
-                                                "unused161",
-                                                "unused162",
-                                                "unused163",
-                                                "unused164",
-                                                "unused165",
-                                                "unused166",
-                                                "unused167",
-                                                "unused168",
-                                                "unused169",
-                                                "unused170",
-                                                "unused171",
-                                                "unused172",
-                                                "unused173",
-                                                "unused174",
-                                                "unused175",
-                                                "unused176",
-                                                "unused177",
-                                                "unused178",
-                                                "unused179",
-                                                "unused180",
-                                                "unused181",
-                                                "unused182",
-                                                "unused183",
-                                                "unused184",
-                                                "unused185",
-                                                "unused186",
-                                                "unused187",
-                                                "unused188",
-                                                "unused189",
-                                                "unused190",
-                                                "unused191",
-                                                "unused192",
-                                                "unused193",
-                                                "unused194",
-                                                "unused195",
-                                                "unused196",
-                                                "unused197",
-                                                "unused198",
-                                                "unused199",
-                                                "unused200",
-                                                "unused201",
-                                                "unused202",
-                                                "unused203",
-                                                "unused204",
-                                                "unused205",
-                                                "unused206",
-                                                "unused207",
-                                                "unused208",
-                                                "unused209",
-                                                "unused210",
-                                                "unused211",
-                                                "unused212",
-                                                "unused213",
-                                                "unused214",
-                                                "unused215",
-                                                "unused216",
-                                                "unused217",
-                                                "unused218",
-                                                "unused219",
-                                                "unused220",
-                                                "unused221",
-                                                "unused222",
-                                                "unused223",
-                                                "unused224",
-                                                "unused225",
-                                                "unused226",
-                                                "unused227",
-                                                "unused228",
-                                                "unused229",
-                                                "unused230",
-                                                "unused231",
-                                                "unused232",
-                                                "unused233",
-                                                "unused234",
-                                                "unused235",
-                                                "unused236",
-                                                "unused237",
-                                                "unused238",
-                                                "unused239",
-                                                "unused240",
-                                                "unused241",
-                                                "unused242",
-                                                "unused243",
-                                                "unused244",
-                                                "unused245",
-                                                "unused246",
-                                                "unused247",
-                                                "unused248",
-                                                "unused249",
-                                                "unused250",
-                                                "unused251",
-                                                "unused252",
-                                                "unused253",
-                                                "unused254",
-                                                "unused255"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/vms/{vmid}",
-                                          [
-                                             "VM.Config.Disk"
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a volume to another container, you need the permissions on the target container as well."
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "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" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migration tunnel endpoint - only for internal use by CT migration.",
-                                    "method" : "POST",
-                                    "name" : "mtunnel",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "bridges" : {
-                                             "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
-                                             "format" : "pve-bridge-id-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "storages" : {
-                                             "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
-                                             "format" : "pve-storage-id-list",
-                                             "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" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Allocate"
-                                             ]
-                                          ],
-                                          [
-                                             "perm",
-                                             "/",
-                                             [
-                                                "Sys.Incoming"
-                                             ]
-                                          ]
-                                       ],
-                                       "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "socket" : {
-                                             "type" : "string"
-                                          },
-                                          "ticket" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          }
-                                       }
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/mtunnel",
-                              "text" : "mtunnel"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
-                                    "method" : "GET",
-                                    "name" : "mtunnelwebsocket",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "socket" : {
-                                             "description" : "unix socket to forward to",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "ticket" : {
-                                             "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "The (unique) ID of the VM.",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
-                                       "user" : "all"
-                                    },
-                                    "returns" : {
-                                       "properties" : {
-                                          "port" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "socket" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/lxc/{vmid}/mtunnelwebsocket",
-                              "text" : "mtunnelwebsocket"
-                           }
-                        ],
-                        "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",
-                                       "minimum" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/vms/{vmid}",
-                                    [
-                                       "VM.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Directory index",
-                              "method" : "GET",
-                              "name" : "vmdiridx",
-                              "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" : {
-                                 "user" : "all"
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "subdir" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{subdir}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/lxc/{vmid}",
-                        "text" : "{vmid}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "LXC container index (per node).",
-                        "method" : "GET",
-                        "name" : "vmlist",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "Only list CTs where you have VM.Audit permissons on /vms/<vmid>.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "cpus" : {
-                                    "description" : "Maximum usable CPUs.",
-                                    "optional" : 1,
-                                    "type" : "number"
-                                 },
-                                 "lock" : {
-                                    "description" : "The current config lock, if any.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "maxdisk" : {
-                                    "description" : "Root disk size in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "maxmem" : {
-                                    "description" : "Maximum memory in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "maxswap" : {
-                                    "description" : "Maximum SWAP memory in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "name" : {
-                                    "description" : "Container name.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "status" : {
-                                    "description" : "LXC Container status.",
-                                    "enum" : [
-                                       "stopped",
-                                       "running"
-                                    ],
-                                    "type" : "string"
-                                 },
-                                 "tags" : {
-                                    "description" : "The current configured tags, if any.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "uptime" : {
-                                    "description" : "Uptime.",
-                                    "optional" : 1,
-                                    "renderer" : "duration",
-                                    "type" : "integer"
-                                 },
-                                 "vmid" : {
-                                    "description" : "The (unique) ID of the VM.",
-                                    "format" : "pve-vmid",
-                                    "minimum" : 1,
-                                    "type" : "integer"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{vmid}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create or restore a container.",
-                        "method" : "POST",
-                        "name" : "create_vm",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "arch" : {
-                                 "default" : "amd64",
-                                 "description" : "OS architecture type.",
-                                 "enum" : [
-                                    "amd64",
-                                    "i386",
-                                    "arm64",
-                                    "armhf"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "bwlimit" : {
-                                 "default" : "restore limit from datacenter or storage config",
-                                 "description" : "Override I/O bandwidth limit (in KiB/s).",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number",
-                                 "typetext" : "<number> (0 - N)"
-                              },
-                              "cmode" : {
-                                 "default" : "tty",
-                                 "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
-                                 "enum" : [
-                                    "shell",
-                                    "console",
-                                    "tty"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "console" : {
-                                 "default" : 1,
-                                 "description" : "Attach a console device (/dev/console) to the container.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "cores" : {
-                                 "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
-                                 "maximum" : 8192,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "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" : 8192,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "number",
-                                 "typetext" : "<number> (0 - 8192)"
-                              },
-                              "cpuunits" : {
-                                 "default" : "cgroup v1: 1024, cgroup v2: 100",
-                                 "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
-                                 "maximum" : 500000,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 500000)",
-                                 "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
-                              },
-                              "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" : "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"
-                                    },
-                                    "keyctl" : {
-                                       "default" : 0,
-                                       "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "mknod" : {
-                                       "default" : 0,
-                                       "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "mount" : {
-                                       "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
-                                       "format_description" : "fstype;fstype;...",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
-                                       "type" : "string"
-                                    },
-                                    "nesting" : {
-                                       "default" : 0,
-                                       "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "hookscript" : {
-                                 "description" : "Script that will be exectued during various steps in the containers lifetime.",
-                                 "format" : "pve-volume-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "hostname" : {
-                                 "description" : "Set a host name for the container.",
-                                 "format" : "dns-name",
-                                 "maxLength" : 255,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ignore-unpack-errors" : {
-                                 "description" : "Ignore errors when extracting the template.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "lock" : {
-                                 "description" : "Lock/unlock the container.",
-                                 "enum" : [
-                                    "backup",
-                                    "create",
-                                    "destroyed",
-                                    "disk",
-                                    "fstrim",
-                                    "migrate",
-                                    "mounted",
-                                    "rollback",
-                                    "snapshot",
-                                    "snapshot-delete"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "memory" : {
-                                 "default" : 512,
-                                 "description" : "Amount of RAM for the container in MB.",
-                                 "minimum" : 16,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (16 - N)"
-                              },
-                              "mp[n]" : {
-                                 "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.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "backup" : {
-                                       "description" : "Whether to include the mount point in backups.",
-                                       "optional" : 1,
-                                       "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
-                                       "format_description" : "Path",
-                                       "type" : "string",
-                                       "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
-                                    },
-                                    "quota" : {
-                                       "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Will include this volume to a storage replica job.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ro" : {
-                                       "description" : "Read-only mount point",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Volume size (read only value).",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "default_key" : 1,
-                                       "description" : "Volume, device or directory to mount into the container.",
-                                       "format" : "pve-lxc-mp-string",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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" : "lxc-ip-with-ll-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "net[n]" : {
-                                 "description" : "Specifies network interfaces for the container.",
-                                 "format" : {
-                                    "bridge" : {
-                                       "description" : "Bridge to attach the network device to.",
-                                       "format_description" : "bridge",
-                                       "optional" : 1,
-                                       "pattern" : "[-_.\\w\\d]+",
-                                       "type" : "string"
-                                    },
-                                    "firewall" : {
-                                       "description" : "Controls whether this interface's firewall rules should be used.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "gw" : {
-                                       "description" : "Default gateway for IPv4 traffic.",
-                                       "format" : "ipv4",
-                                       "format_description" : "GatewayIPv4",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "gw6" : {
-                                       "description" : "Default gateway for IPv6 traffic.",
-                                       "format" : "ipv6",
-                                       "format_description" : "GatewayIPv6",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "hwaddr" : {
-                                       "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
-                                       "format" : "mac-addr",
-                                       "format_description" : "XX:XX:XX:XX:XX:XX",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
-                                    },
-                                    "ip" : {
-                                       "description" : "IPv4 address in CIDR format.",
-                                       "format" : "pve-ipv4-config",
-                                       "format_description" : "(IPv4/CIDR|dhcp|manual)",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "ip6" : {
-                                       "description" : "IPv6 address in CIDR format.",
-                                       "format" : "pve-ipv6-config",
-                                       "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "mtu" : {
-                                       "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
-                                       "maximum" : 65535,
-                                       "minimum" : 64,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "name" : {
-                                       "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
-                                       "format_description" : "string",
-                                       "pattern" : "[-_.\\w\\d]+",
-                                       "type" : "string"
-                                    },
-                                    "rate" : {
-                                       "description" : "Apply rate limiting to the interface",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "tag" : {
-                                       "description" : "VLAN tag for this interface.",
-                                       "maximum" : 4094,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "trunks" : {
-                                       "description" : "VLAN ids to pass through the interface",
-                                       "format_description" : "vlanid[;vlanid...]",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:\\d+(?:;\\d+)*)",
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "description" : "Network interface type.",
-                                       "enum" : [
-                                          "veth"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "onboot" : {
-                                 "default" : 0,
-                                 "description" : "Specifies whether a container will be started during system bootup.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "ostemplate" : {
-                                 "description" : "The OS template or backup file.",
-                                 "maxLength" : 255,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ostype" : {
-                                 "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",
-                                    "opensuse",
-                                    "archlinux",
-                                    "alpine",
-                                    "gentoo",
-                                    "nixos",
-                                    "unmanaged"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "password" : {
-                                 "description" : "Sets root password inside container.",
-                                 "minLength" : 5,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "pool" : {
-                                 "description" : "Add the VM to the specified pool.",
-                                 "format" : "pve-poolid",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "protection" : {
-                                 "default" : 0,
-                                 "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "restore" : {
-                                 "description" : "Mark this as restore task.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "rootfs" : {
-                                 "description" : "Use volume as container root.",
-                                 "format" : {
-                                    "acl" : {
-                                       "description" : "Explicitly enable or disable ACL support.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "mountoptions" : {
-                                       "description" : "Extra mount options for rootfs/mps.",
-                                       "format_description" : "opt[;opt...]",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
-                                       "type" : "string"
-                                    },
-                                    "quota" : {
-                                       "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Will include this volume to a storage replica job.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ro" : {
-                                       "description" : "Read-only mount point",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Volume size (read only value).",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "default_key" : 1,
-                                       "description" : "Volume, device or directory to mount into the container.",
-                                       "format" : "pve-lxc-mp-string",
-                                       "format_description" : "volume",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "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.",
-                                 "format" : "dns-name-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ssh-public-keys" : {
-                                 "description" : "Setup public SSH keys (one key per line, OpenSSH format).",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "start" : {
-                                 "default" : 0,
-                                 "description" : "Start the CT after its creation finished successfully.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "startup" : {
-                                 "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
-                                 "format" : "pve-startup-order",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
-                              },
-                              "storage" : {
-                                 "default" : "local",
-                                 "description" : "Default Storage.",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "swap" : {
-                                 "default" : 512,
-                                 "description" : "Amount of SWAP for the container in MB.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "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.",
-                                 "optional" : 1,
-                                 "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",
-                                 "maximum" : 6,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 6)"
-                              },
-                              "unique" : {
-                                 "description" : "Assign a unique random ethernet address.",
-                                 "optional" : 1,
-                                 "requires" : "restore",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "unprivileged" : {
-                                 "default" : 0,
-                                 "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "unused[n]" : {
-                                 "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
-                                 "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" : "[volume=]<volume>"
-                              },
-                              "vmid" : {
-                                 "description" : "The (unique) ID of the VM.",
-                                 "format" : "pve-vmid",
-                                 "minimum" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore, it is enough if the user has 'VM.Backup' permission and the VM already exists. You also need 'Datastore.AllocateSpace' permissions on the storage.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/lxc",
-                  "text" : "lxc"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "ceph osd in",
-                                          "method" : "POST",
-                                          "name" : "in",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "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}/in",
-                                    "text" : "in"
-                                 },
-                                 {
-                                    "info" : {
-                                       "POST" : {
-                                          "allowtoken" : 1,
-                                          "description" : "ceph osd out",
-                                          "method" : "POST",
-                                          "name" : "out",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "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}/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" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Destroy Ceph Manager.",
-                                    "method" : "DELETE",
-                                    "name" : "destroymgr",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "The ID of the manager",
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<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"
-                                          },
-                                          "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/mgr/{id}",
-                              "text" : "{id}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "MGR directory index.",
-                              "method" : "GET",
-                              "name" : "index",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<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 MGR"
-                                       },
-                                       "state" : {
-                                          "description" : "State of the MGR",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/mgr",
-                        "text" : "mgr"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Destroy Ceph Monitor and Manager.",
-                                    "method" : "DELETE",
-                                    "name" : "destroymon",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "monid" : {
-                                             "description" : "Monitor ID",
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create Ceph Monitor and Manager",
-                                    "method" : "POST",
-                                    "name" : "createmon",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "mon-address" : {
-                                             "description" : "Overwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph.",
-                                             "format" : "ip-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "monid" : {
-                                             "description" : "The ID for the monitor, when omitted the same as the nodename",
-                                             "maxLength" : 200,
-                                             "optional" : 1,
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/mon/{monid}",
-                              "text" : "{monid}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get Ceph monitor list.",
-                              "method" : "GET",
-                              "name" : "listmon",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<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" : {
-                                          "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"
-                                       },
-                                       "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"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/fs",
-                        "text" : "fs"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "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_ecprofile" : {
-                                             "default" : 1,
-                                             "description" : "Remove the erasure code profile. Defaults to true, if applicable.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "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" : {
-                                             "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"
-                                          },
-                                          "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"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Change POOL settings",
-                                    "method" : "PUT",
-                                    "name" : "setpool",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "application" : {
-                                             "description" : "The application of the pool.",
-                                             "enum" : [
-                                                "rbd",
-                                                "cephfs",
-                                                "rgw"
-                                             ],
-                                             "optional" : 1,
-                                             "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>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/pools/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "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" : {
-                                       "application_metadata" : {
-                                          "optional" : 1,
-                                          "title" : "Associated Applications",
-                                          "type" : "object"
-                                       },
-                                       "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"
-                                       },
-                                       "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" : {
-                                          "enum" : [
-                                             "replicated",
-                                             "erasure",
-                                             "unknown"
-                                          ],
-                                          "title" : "Type",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{pool_name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create Ceph pool",
-                              "method" : "POST",
-                              "name" : "createpool",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storages" : {
-                                       "default" : "0; for erasure coded pools: 1",
-                                       "description" : "Configure VM and CT storage using the new pool.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "application" : {
-                                       "default" : "rbd",
-                                       "description" : "The application of the pool.",
-                                       "enum" : [
-                                          "rbd",
-                                          "cephfs",
-                                          "rgw"
-                                       ],
-                                       "optional" : 1,
-                                       "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>"
-                                    },
-                                    "erasure-coding" : {
-                                       "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
-                                       "format" : {
-                                          "device-class" : {
-                                             "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "class",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "failure-domain" : {
-                                             "default" : "host",
-                                             "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "domain",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "k" : {
-                                             "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 2,
-                                             "type" : "integer"
-                                          },
-                                          "m" : {
-                                             "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "profile" : {
-                                             "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "profile",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
-                                    },
-                                    "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>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "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>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/pools",
-                        "text" : "pools"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "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"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get Ceph configuration database.",
-                              "method" : "GET",
-                              "name" : "configdb",
-                              "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" : {
-                                       "can_update_at_runtime" : {
-                                          "type" : "boolean"
-                                       },
-                                       "level" : {
-                                          "type" : "string"
-                                       },
-                                       "mask" : {
-                                          "type" : "string"
-                                       },
-                                       "name" : {
-                                          "type" : "string"
-                                       },
-                                       "section" : {
-                                          "type" : "string"
-                                       },
-                                       "value" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/configdb",
-                        "text" : "configdb"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create initial ceph default configuration and setup symlinks.",
-                              "method" : "POST",
-                              "name" : "init",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "cluster-network" : {
-                                       "description" : "Declare a separate cluster network, OSDs will routeheartbeat, object replication and recovery traffic over it",
-                                       "format" : "CIDR",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "requires" : "network",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "disable_cephx" : {
-                                       "default" : 0,
-                                       "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>"
-                                    },
-                                    "min_size" : {
-                                       "default" : 2,
-                                       "description" : "Minimum number of available replicas per object to allow I/O",
-                                       "maximum" : 7,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 7)"
-                                    },
-                                    "network" : {
-                                       "description" : "Use specific network for all ceph related traffic",
-                                       "format" : "CIDR",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "pg_bits" : {
-                                       "default" : 6,
-                                       "description" : "Placement group bits, used to specify the default number of placement groups.\n\nNOTE: 'osd pool default pg num' does not work for default pools.",
-                                       "maximum" : 14,
-                                       "minimum" : 6,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (6 - 14)"
-                                    },
-                                    "size" : {
-                                       "default" : 3,
-                                       "description" : "Targeted 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" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/init",
-                        "text" : "init"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Stop ceph services.",
-                              "method" : "POST",
-                              "name" : "stop",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "service" : {
-                                       "default" : "ceph.target",
-                                       "description" : "Ceph service name.",
-                                       "optional" : 1,
-                                       "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/stop",
-                        "text" : "stop"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Start ceph services.",
-                              "method" : "POST",
-                              "name" : "start",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "service" : {
-                                       "default" : "ceph.target",
-                                       "description" : "Ceph service name.",
-                                       "optional" : 1,
-                                       "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/start",
-                        "text" : "start"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Restart ceph services.",
-                              "method" : "POST",
-                              "name" : "restart",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "service" : {
-                                       "default" : "ceph.target",
-                                       "description" : "Ceph service name.",
-                                       "optional" : 1,
-                                       "pattern" : "(mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/restart",
-                        "text" : "restart"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get ceph status.",
-                              "method" : "GET",
-                              "name" : "status",
-                              "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"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/status",
-                        "text" : "status"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get OSD crush map",
-                              "method" : "GET",
-                              "name" : "crush",
-                              "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" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/crush",
-                        "text" : "crush"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read ceph log",
-                              "method" : "GET",
-                              "name" : "log",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "limit" : {
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "start" : {
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Syslog"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "n" : {
-                                          "description" : "Line number",
-                                          "type" : "integer"
-                                       },
-                                       "t" : {
-                                          "description" : "Line text",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/log",
-                        "text" : "log"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List ceph rules.",
-                              "method" : "GET",
-                              "name" : "rules",
-                              "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" : {},
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/rules",
-                        "text" : "rules"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Heuristical check if it is safe to perform an action.",
-                              "method" : "GET",
-                              "name" : "cmd_safety",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "action" : {
-                                       "description" : "Action to check",
-                                       "enum" : [
-                                          "stop",
-                                          "destroy"
-                                       ],
-                                       "type" : "string"
-                                    },
-                                    "id" : {
-                                       "description" : "ID of the service",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "service" : {
-                                       "description" : "Service type",
-                                       "enum" : [
-                                          "osd",
-                                          "mon",
-                                          "mds"
-                                       ],
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.audit"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "properties" : {
-                                    "safe" : {
-                                       "description" : "If it is safe to run the command.",
-                                       "type" : "boolean"
-                                    },
-                                    "status" : {
-                                       "description" : "Status message given by Ceph.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/cmd-safety",
-                        "text" : "cmd-safety"
-                     }
-                  ],
-                  "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
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/ceph",
-                  "text" : "ceph"
-               },
-               {
-                  "children" : [
-                     {
-                        "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"
-                                    },
-                                    "notes-template" : {
-                                       "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                                       "maxLength" : 1024,
-                                       "optional" : 1,
-                                       "requires" : "storage",
-                                       "type" : "string"
-                                    },
-                                    "performance" : {
-                                       "description" : "Other performance-related settings.",
-                                       "format" : "backup-performance",
-                                       "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"
-                                    },
-                                    "protected" : {
-                                       "description" : "If true, mark backup(s) as protected.",
-                                       "optional" : 1,
-                                       "requires" : "storage",
-                                       "type" : "boolean"
-                                    },
-                                    "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",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "volume" : {
-                                       "description" : "Volume identifier",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "description" : "The user needs 'VM.Backup' permissions on the backed up guest ID, and 'Datastore.AllocateSpace' on the backup storage.",
-                                 "user" : "all"
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/vzdump/extractconfig",
-                        "text" : "extractconfig"
-                     }
-                  ],
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create backup.",
-                        "method" : "POST",
-                        "name" : "vzdump",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "all" : {
-                                 "default" : 0,
-                                 "description" : "Backup all known guest systems on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "bwlimit" : {
-                                 "default" : 0,
-                                 "description" : "Limit I/O bandwidth (KBytes per second).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "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",
-                                 "typetext" : "<string>"
-                              },
-                              "exclude" : {
-                                 "description" : "Exclude specified guest systems (assumes --all)",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<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",
-                                 "typetext" : "<string>"
-                              },
-                              "ionice" : {
-                                 "default" : 7,
-                                 "description" : "Set CFQ ionice priority.",
-                                 "maximum" : 8,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 8)"
-                              },
-                              "lockwait" : {
-                                 "default" : 180,
-                                 "description" : "Maximal time to wait for the global lock (minutes).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "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",
-                                 "typetext" : "<string>"
-                              },
-                              "maxfiles" : {
-                                 "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "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",
-                                 "typetext" : "<string>"
-                              },
-                              "notes-template" : {
-                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                                 "maxLength" : 1024,
-                                 "optional" : 1,
-                                 "requires" : "storage",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "performance" : {
-                                 "description" : "Other performance-related settings.",
-                                 "format" : "backup-performance",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[max-workers=<integer>]"
-                              },
-                              "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",
-                                 "typetext" : "<integer>"
-                              },
-                              "pool" : {
-                                 "description" : "Backup all known guest systems included in the specified pool.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "protected" : {
-                                 "description" : "If true, mark backup(s) as protected.",
-                                 "optional" : 1,
-                                 "requires" : "storage",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "remove" : {
-                                 "default" : 1,
-                                 "description" : "Prune older backups according to 'prune-backups'.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "script" : {
-                                 "description" : "Use specified hook script.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "stdexcludes" : {
-                                 "default" : 1,
-                                 "description" : "Exclude temporary files and logs.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stdout" : {
-                                 "description" : "Write tar to stdout, not to a file.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stop" : {
-                                 "default" : 0,
-                                 "description" : "Stop running backup jobs on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stopwait" : {
-                                 "default" : 10,
-                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "storage" : {
-                                 "description" : "Store resulting file to this storage.",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "tmpdir" : {
-                                 "description" : "Store temporary files to specified directory.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vmid" : {
-                                 "description" : "The ID of the guest system you want to backup.",
-                                 "format" : "pve-vmid-list",
-                                 "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', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit', 'performance' and 'ionice' parameters are restricted to the 'root at pam' user.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/vzdump",
-                  "text" : "vzdump"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read service properties",
-                                    "method" : "GET",
-                                    "name" : "service_state",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "chrony",
-                                                "corosync",
-                                                "cron",
-                                                "ksmtuned",
-                                                "postfix",
-                                                "pve-cluster",
-                                                "pve-firewall",
-                                                "pve-ha-crm",
-                                                "pve-ha-lrm",
-                                                "pvedaemon",
-                                                "pvefw-logger",
-                                                "pveproxy",
-                                                "pvescheduler",
-                                                "pvestatd",
-                                                "spiceproxy",
-                                                "sshd",
-                                                "syslog",
-                                                "systemd-journald",
-                                                "systemd-timesyncd"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/state",
-                              "text" : "state"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Start service.",
-                                    "method" : "POST",
-                                    "name" : "service_start",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "chrony",
-                                                "corosync",
-                                                "cron",
-                                                "ksmtuned",
-                                                "postfix",
-                                                "pve-cluster",
-                                                "pve-firewall",
-                                                "pve-ha-crm",
-                                                "pve-ha-lrm",
-                                                "pvedaemon",
-                                                "pvefw-logger",
-                                                "pveproxy",
-                                                "pvescheduler",
-                                                "pvestatd",
-                                                "spiceproxy",
-                                                "sshd",
-                                                "syslog",
-                                                "systemd-journald",
-                                                "systemd-timesyncd"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/start",
-                              "text" : "start"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Stop service.",
-                                    "method" : "POST",
-                                    "name" : "service_stop",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "chrony",
-                                                "corosync",
-                                                "cron",
-                                                "ksmtuned",
-                                                "postfix",
-                                                "pve-cluster",
-                                                "pve-firewall",
-                                                "pve-ha-crm",
-                                                "pve-ha-lrm",
-                                                "pvedaemon",
-                                                "pvefw-logger",
-                                                "pveproxy",
-                                                "pvescheduler",
-                                                "pvestatd",
-                                                "spiceproxy",
-                                                "sshd",
-                                                "syslog",
-                                                "systemd-journald",
-                                                "systemd-timesyncd"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/stop",
-                              "text" : "stop"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Hard restart service. Use reload if you want to reduce interruptions.",
-                                    "method" : "POST",
-                                    "name" : "service_restart",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "chrony",
-                                                "corosync",
-                                                "cron",
-                                                "ksmtuned",
-                                                "postfix",
-                                                "pve-cluster",
-                                                "pve-firewall",
-                                                "pve-ha-crm",
-                                                "pve-ha-lrm",
-                                                "pvedaemon",
-                                                "pvefw-logger",
-                                                "pveproxy",
-                                                "pvescheduler",
-                                                "pvestatd",
-                                                "spiceproxy",
-                                                "sshd",
-                                                "syslog",
-                                                "systemd-journald",
-                                                "systemd-timesyncd"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/restart",
-                              "text" : "restart"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Reload service. Falls back to restart if service cannot be reloaded.",
-                                    "method" : "POST",
-                                    "name" : "service_reload",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "chrony",
-                                                "corosync",
-                                                "cron",
-                                                "ksmtuned",
-                                                "postfix",
-                                                "pve-cluster",
-                                                "pve-firewall",
-                                                "pve-ha-crm",
-                                                "pve-ha-lrm",
-                                                "pvedaemon",
-                                                "pvefw-logger",
-                                                "pveproxy",
-                                                "pvescheduler",
-                                                "pvestatd",
-                                                "spiceproxy",
-                                                "sshd",
-                                                "syslog",
-                                                "systemd-journald",
-                                                "systemd-timesyncd"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/reload",
-                              "text" : "reload"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Directory index",
-                              "method" : "GET",
-                              "name" : "srvcmdidx",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "service" : {
-                                       "description" : "Service ID",
-                                       "enum" : [
-                                          "chrony",
-                                          "corosync",
-                                          "cron",
-                                          "ksmtuned",
-                                          "postfix",
-                                          "pve-cluster",
-                                          "pve-firewall",
-                                          "pve-ha-crm",
-                                          "pve-ha-lrm",
-                                          "pvedaemon",
-                                          "pvefw-logger",
-                                          "pveproxy",
-                                          "pvescheduler",
-                                          "pvestatd",
-                                          "spiceproxy",
-                                          "sshd",
-                                          "syslog",
-                                          "systemd-journald",
-                                          "systemd-timesyncd"
-                                       ],
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "subdir" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{subdir}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/services/{service}",
-                        "text" : "{service}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Service list.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{service}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/services",
-                  "text" : "services"
-               },
-               {
-                  "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Update subscription info.",
-                        "method" : "POST",
-                        "name" : "update",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "force" : {
-                                 "default" : 0,
-                                 "description" : "Always connect to server, even if we have up to date info inside local cache.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Set subscription key.",
-                        "method" : "PUT",
-                        "name" : "set",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "key" : {
-                                 "description" : "Proxmox VE subscription key",
-                                 "maxLength" : 32,
-                                 "pattern" : "pve([1248])([cbsp])-[0-9a-f]{10}",
-                                 "type" : "string"
-                              },
-                              "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"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/subscription",
-                  "text" : "subscription"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete network device configuration",
-                              "method" : "DELETE",
-                              "name" : "delete_network",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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 network device configuration",
-                              "method" : "GET",
-                              "name" : "network_config",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "properties" : {
-                                    "method" : {
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update network device configuration",
-                              "method" : "PUT",
-                              "name" : "update_network",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "address" : {
-                                       "description" : "IP address.",
-                                       "format" : "ipv4",
-                                       "optional" : 1,
-                                       "requires" : "netmask",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "address6" : {
-                                       "description" : "IP address.",
-                                       "format" : "ipv6",
-                                       "optional" : 1,
-                                       "requires" : "netmask6",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "autostart" : {
-                                       "description" : "Automatically start interface on boot.",
-                                       "optional" : 1,
-                                       "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" : [
-                                          "balance-rr",
-                                          "active-backup",
-                                          "balance-xor",
-                                          "broadcast",
-                                          "802.3ad",
-                                          "balance-tlb",
-                                          "balance-alb",
-                                          "balance-slb",
-                                          "lacp-balance-slb",
-                                          "lacp-balance-tcp"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "bond_xmit_hash_policy" : {
-                                       "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
-                                       "enum" : [
-                                          "layer2",
-                                          "layer2+3",
-                                          "layer3+4"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "bridge_ports" : {
-                                       "description" : "Specify the interfaces you want to add to your bridge.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "bridge_vlan_aware" : {
-                                       "description" : "Enable bridge vlan support.",
-                                       "optional" : 1,
-                                       "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>"
-                                    },
-                                    "comments6" : {
-                                       "description" : "Comments",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "gateway" : {
-                                       "description" : "Default gateway address.",
-                                       "format" : "ipv4",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "gateway6" : {
-                                       "description" : "Default ipv6 gateway address.",
-                                       "format" : "ipv6",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "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",
-                                       "optional" : 1,
-                                       "requires" : "address",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "netmask6" : {
-                                       "description" : "Network mask.",
-                                       "maximum" : 128,
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "requires" : "address6",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - 128)"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "ovs_bonds" : {
-                                       "description" : "Specify the interfaces used by the bonding device.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "ovs_bridge" : {
-                                       "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
-                                       "format" : "pve-iface",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "ovs_options" : {
-                                       "description" : "OVS interface options.",
-                                       "maxLength" : 1024,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "ovs_ports" : {
-                                       "description" : "Specify the interfaces you want to add to your bridge.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "ovs_tag" : {
-                                       "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
-                                       "maximum" : 4094,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 4094)"
-                                    },
-                                    "slaves" : {
-                                       "description" : "Specify the interfaces used by the bonding device.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "type" : {
-                                       "description" : "Network interface type",
-                                       "enum" : [
-                                          "bridge",
-                                          "bond",
-                                          "eth",
-                                          "alias",
-                                          "vlan",
-                                          "OVSBridge",
-                                          "OVSBond",
-                                          "OVSPort",
-                                          "OVSIntPort",
-                                          "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>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/network/{iface}",
-                        "text" : "{iface}"
-                     }
-                  ],
-                  "info" : {
-                     "DELETE" : {
-                        "allowtoken" : 1,
-                        "description" : "Revert network configuration changes.",
-                        "method" : "DELETE",
-                        "name" : "revert_network_changes",
-                        "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" : "List available networks",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Only list specific interface types.",
-                                 "enum" : [
-                                    "bridge",
-                                    "bond",
-                                    "eth",
-                                    "alias",
-                                    "vlan",
-                                    "OVSBridge",
-                                    "OVSBond",
-                                    "OVSPort",
-                                    "OVSIntPort",
-                                    "any_bridge"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{iface}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create network device configuration",
-                        "method" : "POST",
-                        "name" : "create_network",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "address" : {
-                                 "description" : "IP address.",
-                                 "format" : "ipv4",
-                                 "optional" : 1,
-                                 "requires" : "netmask",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "address6" : {
-                                 "description" : "IP address.",
-                                 "format" : "ipv6",
-                                 "optional" : 1,
-                                 "requires" : "netmask6",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "autostart" : {
-                                 "description" : "Automatically start interface on boot.",
-                                 "optional" : 1,
-                                 "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" : [
-                                    "balance-rr",
-                                    "active-backup",
-                                    "balance-xor",
-                                    "broadcast",
-                                    "802.3ad",
-                                    "balance-tlb",
-                                    "balance-alb",
-                                    "balance-slb",
-                                    "lacp-balance-slb",
-                                    "lacp-balance-tcp"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "bond_xmit_hash_policy" : {
-                                 "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
-                                 "enum" : [
-                                    "layer2",
-                                    "layer2+3",
-                                    "layer3+4"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "bridge_ports" : {
-                                 "description" : "Specify the interfaces you want to add to your bridge.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "bridge_vlan_aware" : {
-                                 "description" : "Enable bridge vlan support.",
-                                 "optional" : 1,
-                                 "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>"
-                              },
-                              "comments6" : {
-                                 "description" : "Comments",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "gateway" : {
-                                 "description" : "Default gateway address.",
-                                 "format" : "ipv4",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "gateway6" : {
-                                 "description" : "Default ipv6 gateway address.",
-                                 "format" : "ipv6",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "iface" : {
-                                 "description" : "Network interface name.",
-                                 "format" : "pve-iface",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
-                                 "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",
-                                 "optional" : 1,
-                                 "requires" : "address",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "netmask6" : {
-                                 "description" : "Network mask.",
-                                 "maximum" : 128,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "requires" : "address6",
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 128)"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_bonds" : {
-                                 "description" : "Specify the interfaces used by the bonding device.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_bridge" : {
-                                 "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
-                                 "format" : "pve-iface",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_options" : {
-                                 "description" : "OVS interface options.",
-                                 "maxLength" : 1024,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_ports" : {
-                                 "description" : "Specify the interfaces you want to add to your bridge.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_tag" : {
-                                 "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
-                                 "maximum" : 4094,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 4094)"
-                              },
-                              "slaves" : {
-                                 "description" : "Specify the interfaces used by the bonding device.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Network interface type",
-                                 "enum" : [
-                                    "bridge",
-                                    "bond",
-                                    "eth",
-                                    "alias",
-                                    "vlan",
-                                    "OVSBridge",
-                                    "OVSBond",
-                                    "OVSPort",
-                                    "OVSIntPort",
-                                    "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>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Reload network configuration",
-                        "method" : "PUT",
-                        "name" : "reload_network_config",
-                        "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" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/network",
-                  "text" : "network"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read task log.",
-                                    "method" : "GET",
-                                    "name" : "read_task_log",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "limit" : {
-                                             "default" : 50,
-                                             "description" : "The maximum amount of lines that should be printed.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "start" : {
-                                             "default" : 0,
-                                             "description" : "The line number to start printing at.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "upid" : {
-                                             "description" : "The task's unique ID.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they aren't the owner of the task.",
-                                       "user" : "all"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "n" : {
-                                                "description" : "Line number",
-                                                "type" : "integer"
-                                             },
-                                             "t" : {
-                                                "description" : "Line text",
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/tasks/{upid}/log",
-                              "text" : "log"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read task status.",
-                                    "method" : "GET",
-                                    "name" : "read_task_status",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "upid" : {
-                                             "description" : "The task's unique ID.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they are not the owner of the task.",
-                                       "user" : "all"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "exitstatus" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "id" : {
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "type" : "string"
-                                          },
-                                          "pid" : {
-                                             "type" : "integer"
-                                          },
-                                          "starttime" : {
-                                             "type" : "number"
-                                          },
-                                          "status" : {
-                                             "enum" : [
-                                                "running",
-                                                "stopped"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "type" : {
-                                             "type" : "string"
-                                          },
-                                          "upid" : {
-                                             "type" : "string"
-                                          },
-                                          "user" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/tasks/{upid}/status",
-                              "text" : "status"
-                           }
-                        ],
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Stop a task.",
-                              "method" : "DELETE",
-                              "name" : "stop_task",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "upid" : {
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "description" : "The user needs 'Sys.Modify' permissions on '/nodes/<node>' if they aren't the owner of the task.",
-                                 "user" : "all"
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "",
-                              "method" : "GET",
-                              "name" : "upid_index",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "upid" : {
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "user" : "all"
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/tasks/{upid}",
-                        "text" : "{upid}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read task list for one node (finished tasks).",
-                        "method" : "GET",
-                        "name" : "node_tasks",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "errors" : {
-                                 "default" : 0,
-                                 "description" : "Only list tasks with a status of ERROR.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "limit" : {
-                                 "default" : 50,
-                                 "description" : "Only list this amount of tasks.",
-                                 "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" : "Only list tasks since this UNIX epoch.",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer>"
-                              },
-                              "source" : {
-                                 "default" : "archive",
-                                 "description" : "List archived, active or all tasks.",
-                                 "enum" : [
-                                    "archive",
-                                    "active",
-                                    "all"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "start" : {
-                                 "default" : 0,
-                                 "description" : "List tasks beginning from this offset.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "statusfilter" : {
-                                 "description" : "List of Task States that should be returned.",
-                                 "format" : "pve-task-status-type-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "typefilter" : {
-                                 "description" : "Only list tasks of this type (e.g., vzstart, vzdump).",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "until" : {
-                                 "description" : "Only list tasks until this UNIX epoch.",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer>"
-                              },
-                              "userfilter" : {
-                                 "description" : "Only list tasks from this user.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vmid" : {
-                                 "description" : "Only list tasks for this VM.",
-                                 "format" : "pve-vmid",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "List task associated with the current user, or all task the user has 'Sys.Audit' permissions on /nodes/<node> (the <node> the task runs on).",
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "endtime" : {
-                                    "optional" : 1,
-                                    "title" : "Endtime",
-                                    "type" : "integer"
-                                 },
-                                 "id" : {
-                                    "title" : "ID",
-                                    "type" : "string"
-                                 },
-                                 "node" : {
-                                    "title" : "Node",
-                                    "type" : "string"
-                                 },
-                                 "pid" : {
-                                    "title" : "PID",
-                                    "type" : "integer"
-                                 },
-                                 "pstart" : {
-                                    "type" : "integer"
-                                 },
-                                 "starttime" : {
-                                    "title" : "Starttime",
-                                    "type" : "integer"
-                                 },
-                                 "status" : {
-                                    "optional" : 1,
-                                    "title" : "Status",
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "title" : "Type",
-                                    "type" : "string"
-                                 },
-                                 "upid" : {
-                                    "title" : "UPID",
-                                    "type" : "string"
-                                 },
-                                 "user" : {
-                                    "title" : "User",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{upid}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/tasks",
-                  "text" : "tasks"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan remote NFS server.",
-                              "method" : "GET",
-                              "name" : "nfsscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "server" : {
-                                       "description" : "The server address (name or IP).",
-                                       "format" : "pve-storage-server",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "options" : {
-                                          "description" : "NFS export options.",
-                                          "type" : "string"
-                                       },
-                                       "path" : {
-                                          "description" : "The exported path.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/nfs",
-                        "text" : "nfs"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan remote CIFS server.",
-                              "method" : "GET",
-                              "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>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "description" : {
-                                          "description" : "Descriptive text from server.",
-                                          "type" : "string"
-                                       },
-                                       "share" : {
-                                          "description" : "The cifs share name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/cifs",
-                        "text" : "cifs"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan remote Proxmox Backup Server.",
-                              "method" : "GET",
-                              "name" : "pbsscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "fingerprint" : {
-                                       "description" : "Certificate SHA 256 fingerprint.",
-                                       "optional" : 1,
-                                       "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                       "type" : "string"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "password" : {
-                                       "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",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "username" : {
-                                       "description" : "User-name or API token-ID.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "comment" : {
-                                          "description" : "Comment from server.",
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "store" : {
-                                          "description" : "The datastore name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/pbs",
-                        "text" : "pbs"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan remote GlusterFS server.",
-                              "method" : "GET",
-                              "name" : "glusterfsscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "server" : {
-                                       "description" : "The server address (name or IP).",
-                                       "format" : "pve-storage-server",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "volname" : {
-                                          "description" : "The volume name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/glusterfs",
-                        "text" : "glusterfs"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan remote iSCSI server.",
-                              "method" : "GET",
-                              "name" : "iscsiscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "portal" : {
-                                       "description" : "The iSCSI portal (IP or DNS name with optional port).",
-                                       "format" : "pve-storage-portal-dns",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "portal" : {
-                                          "description" : "The iSCSI portal name.",
-                                          "type" : "string"
-                                       },
-                                       "target" : {
-                                          "description" : "The iSCSI target name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/iscsi",
-                        "text" : "iscsi"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List local LVM volume groups.",
-                              "method" : "GET",
-                              "name" : "lvmscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "vg" : {
-                                          "description" : "The LVM logical volume group name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/lvm",
-                        "text" : "lvm"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List local LVM Thin Pools.",
-                              "method" : "GET",
-                              "name" : "lvmthinscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "vg" : {
-                                       "maxLength" : 100,
-                                       "pattern" : "[a-zA-Z0-9\\.\\+\\_][a-zA-Z0-9\\.\\+\\_\\-]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "lv" : {
-                                          "description" : "The LVM Thin Pool name (LVM logical volume).",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/lvmthin",
-                        "text" : "lvmthin"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Scan zfs pool list on local node.",
-                              "method" : "GET",
-                              "name" : "zfsscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage",
-                                    [
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "pool" : {
-                                          "description" : "ZFS pool name.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/scan/zfs",
-                        "text" : "zfs"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Index of available scan methods",
-                        "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" : {
-                                 "method" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{method}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/scan",
-                  "text" : "scan"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "List mediated device types for given PCI device.",
-                                          "method" : "GET",
-                                          "name" : "mdevscan",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "pciid" : {
-                                                   "description" : "The PCI ID to list the mdev types for.",
-                                                   "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "check" : [
-                                                "perm",
-                                                "/",
-                                                [
-                                                   "Sys.Modify"
-                                                ]
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "items" : {
-                                                "properties" : {
-                                                   "available" : {
-                                                      "description" : "The number of still available instances of this type.",
-                                                      "type" : "integer"
-                                                   },
-                                                   "description" : {
-                                                      "type" : "string"
-                                                   },
-                                                   "type" : {
-                                                      "description" : "The name of the mdev type.",
-                                                      "type" : "string"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/hardware/pci/{pciid}/mdev",
-                                    "text" : "mdev"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Index of available pci methods",
-                                    "method" : "GET",
-                                    "name" : "pciindex",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pciid" : {
-                                             "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "user" : "all"
-                                    },
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "method" : {
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{method}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/hardware/pci/{pciid}",
-                              "text" : "{pciid}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List local PCI devices.",
-                              "method" : "GET",
-                              "name" : "pciscan",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "pci-class-blacklist" : {
-                                       "default" : "05;06;0b",
-                                       "description" : "A list of blacklisted PCI classes, which will not be returned. Following are filtered by default: Memory Controller (05), Bridge (06) and Processor (0b).",
-                                       "format" : "string-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "verbose" : {
-                                       "default" : 1,
-                                       "description" : "If disabled, does only print the PCI IDs. Otherwise, additional information like vendor and device will be returned.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "class" : {
-                                          "description" : "The PCI Class of the device.",
-                                          "type" : "string"
-                                       },
-                                       "device" : {
-                                          "description" : "The Device ID.",
-                                          "type" : "string"
-                                       },
-                                       "device_name" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "id" : {
-                                          "description" : "The PCI ID.",
-                                          "type" : "string"
-                                       },
-                                       "iommugroup" : {
-                                          "description" : "The IOMMU group in which the device is in. If no IOMMU group is detected, it is set to -1.",
-                                          "type" : "integer"
-                                       },
-                                       "mdev" : {
-                                          "description" : "If set, marks that the device is capable of creating mediated devices.",
-                                          "optional" : 1,
-                                          "type" : "boolean"
-                                       },
-                                       "subsystem_device" : {
-                                          "description" : "The Subsystem Device ID.",
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "subsystem_device_name" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "subsystem_vendor" : {
-                                          "description" : "The Subsystem Vendor ID.",
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "subsystem_vendor_name" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "vendor" : {
-                                          "description" : "The Vendor ID.",
-                                          "type" : "string"
-                                       },
-                                       "vendor_name" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{id}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "type" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{type}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/hardware",
-                  "text" : "hardware"
-               },
-               {
-                  "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. Backups that are protected or don't use the standard naming scheme are not removed.",
-                                                "enum" : [
-                                                   "keep",
-                                                   "remove",
-                                                   "protected",
-                                                   "renamed"
-                                                ],
-                                                "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",
-                                                   "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 'Datastore.Allocate' privilege on the storage (or 'Datastore.AllocateSpace' for backup volumes if you have VM.Backup privilege on the VM).",
-                                             "user" : "all"
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get volume attributes",
-                                          "method" : "GET",
-                                          "name" : "info",
-                                          "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>"
-                                                },
-                                                "volume" : {
-                                                   "description" : "Volume identifier",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "description" : "You need read access for the volume.",
-                                             "user" : "all"
-                                          },
-                                          "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"
-                                                },
-                                                "protected" : {
-                                                   "description" : "Protection status. Currently only supported for backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "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",
-                                          "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>"
-                                                },
-                                                "target" : {
-                                                   "description" : "Target volume identifier",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "target_node" : {
-                                                   "description" : "Target node. Default is local node.",
-                                                   "format" : "pve-node",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "volume" : {
-                                                   "description" : "Source volume identifier",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                }
-                                             }
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "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>"
-                                                },
-                                                "protected" : {
-                                                   "description" : "Protection status. Currently only supported for backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "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,
-                                    "path" : "/nodes/{node}/storage/{storage}/content/{volume}",
-                                    "text" : "{volume}"
-                                 }
-                              ],
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "List storage content.",
-                                    "method" : "GET",
-                                    "name" : "index",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "content" : {
-                                             "description" : "Only list content of this type.",
-                                             "format" : "pve-storage-content",
-                                             "optional" : 1,
-                                             "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>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "Only list images for this VM",
-                                             "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 (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" : "string"
-                                             },
-                                             "protected" : {
-                                                "description" : "Protection status. Currently only supported for backups.",
-                                                "optional" : 1,
-                                                "type" : "boolean"
-                                             },
-                                             "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.",
-                                                "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,
-                                                "type" : "integer"
-                                             },
-                                             "volid" : {
-                                                "description" : "Volume identifier.",
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{volid}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Allocate disk images.",
-                                    "method" : "POST",
-                                    "name" : "create",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "filename" : {
-                                             "description" : "The name of the file to create.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "format" : {
-                                             "enum" : [
-                                                "raw",
-                                                "qcow2",
-                                                "subvol"
-                                             ],
-                                             "optional" : 1,
-                                             "requires" : "size",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "size" : {
-                                             "description" : "Size in kilobyte (1024 bytes). Optional suffixes 'M' (megabyte, 1024K) and 'G' (gigabyte, 1024M)",
-                                             "pattern" : "\\d+[MG]?",
-                                             "type" : "string"
-                                          },
-                                          "storage" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "vmid" : {
-                                             "description" : "Specify owner VM",
-                                             "format" : "pve-vmid",
-                                             "minimum" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage/{storage}",
-                                          [
-                                             "Datastore.AllocateSpace"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "description" : "Volume identifier",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "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",
-                                    "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",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage/{storage}",
-                                          [
-                                             "Datastore.Audit",
-                                             "Datastore.AllocateSpace"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/storage/{storage}/status",
-                              "text" : "status"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read storage RRD statistics (returns PNG).",
-                                    "method" : "GET",
-                                    "name" : "rrd",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ds" : {
-                                             "description" : "The list of datasources you want to display.",
-                                             "format" : "pve-configid-list",
-                                             "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>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage/{storage}",
-                                          [
-                                             "Datastore.Audit",
-                                             "Datastore.AllocateSpace"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "filename" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/storage/{storage}/rrd",
-                              "text" : "rrd"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read storage RRD statistics.",
-                                    "method" : "GET",
-                                    "name" : "rrddata",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cf" : {
-                                             "description" : "The RRD consolidation function",
-                                             "enum" : [
-                                                "AVERAGE",
-                                                "MAX"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "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>"
-                                          },
-                                          "timeframe" : {
-                                             "description" : "Specify the time frame you are interested in.",
-                                             "enum" : [
-                                                "hour",
-                                                "day",
-                                                "week",
-                                                "month",
-                                                "year"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage/{storage}",
-                                          [
-                                             "Datastore.Audit",
-                                             "Datastore.AllocateSpace"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/storage/{storage}/rrddata",
-                              "text" : "rrddata"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Upload templates and ISO images.",
-                                    "method" : "POST",
-                                    "name" : "upload",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "checksum" : {
-                                             "description" : "The expected checksum of the file.",
-                                             "optional" : 1,
-                                             "requires" : "checksum-algorithm",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "checksum-algorithm" : {
-                                             "description" : "The algorithm to calculate the checksum of the file.",
-                                             "enum" : [
-                                                "md5",
-                                                "sha1",
-                                                "sha224",
-                                                "sha256",
-                                                "sha384",
-                                                "sha512"
-                                             ],
-                                             "optional" : 1,
-                                             "requires" : "checksum",
-                                             "type" : "string"
-                                          },
-                                          "content" : {
-                                             "description" : "Content type.",
-                                             "enum" : [
-                                                "iso",
-                                                "vztmpl"
-                                             ],
-                                             "format" : "pve-storage-content",
-                                             "type" : "string"
-                                          },
-                                          "filename" : {
-                                             "description" : "The name of the file to create. Caution: This will be normalized!",
-                                             "maxLength" : 255,
-                                             "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>"
-                                          },
-                                          "tmpfilename" : {
-                                             "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>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage/{storage}",
-                                          [
-                                             "Datastore.AllocateTemplate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/storage/{storage}/upload",
-                              "text" : "upload"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Download templates and ISO images by using an URL.",
-                                    "method" : "POST",
-                                    "name" : "download_url",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "checksum" : {
-                                             "description" : "The expected checksum of the file.",
-                                             "optional" : 1,
-                                             "requires" : "checksum-algorithm",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "checksum-algorithm" : {
-                                             "description" : "The algorithm to calculate the checksum of the file.",
-                                             "enum" : [
-                                                "md5",
-                                                "sha1",
-                                                "sha224",
-                                                "sha256",
-                                                "sha384",
-                                                "sha512"
-                                             ],
-                                             "optional" : 1,
-                                             "requires" : "checksum",
-                                             "type" : "string"
-                                          },
-                                          "content" : {
-                                             "description" : "Content type.",
-                                             "enum" : [
-                                                "iso",
-                                                "vztmpl"
-                                             ],
-                                             "format" : "pve-storage-content",
-                                             "type" : "string"
-                                          },
-                                          "filename" : {
-                                             "description" : "The name of the file to create. Caution: This will be normalized!",
-                                             "maxLength" : 255,
-                                             "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>"
-                                          },
-                                          "url" : {
-                                             "description" : "The URL to download the file from.",
-                                             "pattern" : "https?://.*",
-                                             "type" : "string"
-                                          },
-                                          "verify-certificates" : {
-                                             "default" : 1,
-                                             "description" : "If false, no SSL/TLS certificates will be verified.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/storage/{storage}",
-                                             [
-                                                "Datastore.AllocateTemplate"
-                                             ]
-                                          ],
-                                          [
-                                             "perm",
-                                             "/",
-                                             [
-                                                "Sys.Audit",
-                                                "Sys.Modify"
-                                             ]
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/storage/{storage}/download-url",
-                              "text" : "download-url"
-                           }
-                        ],
-                        "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>"
-                                    },
-                                    "storage" : {
-                                       "description" : "The storage identifier.",
-                                       "format" : "pve-storage-id",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/storage/{storage}",
-                                    [
-                                       "Datastore.Audit",
-                                       "Datastore.AllocateSpace"
-                                    ],
-                                    "any",
-                                    1
-                                 ]
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "subdir" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{subdir}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/storage/{storage}",
-                        "text" : "{storage}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get status for all datastores.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "content" : {
-                                 "description" : "Only list stores which support this content type.",
-                                 "format" : "pve-storage-content-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enabled" : {
-                                 "default" : 0,
-                                 "description" : "Only list stores which are enabled (not disabled in config).",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "format" : {
-                                 "default" : 0,
-                                 "description" : "Include information about formats",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "storage" : {
-                                 "description" : "Only list status for  specified storage",
-                                 "format" : "pve-storage-id",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "target" : {
-                                 "description" : "If target is different to 'node', we only lists shared storages which content is accessible on this 'node' and the specified 'target' node.",
-                                 "format" : "pve-node",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/<storage>'",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "active" : {
-                                    "description" : "Set when storage is accessible.",
-                                    "optional" : 1,
-                                    "type" : "boolean"
-                                 },
-                                 "avail" : {
-                                    "description" : "Available storage space in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "content" : {
-                                    "description" : "Allowed storage content types.",
-                                    "format" : "pve-storage-content-list",
-                                    "type" : "string"
-                                 },
-                                 "enabled" : {
-                                    "description" : "Set when storage is enabled (not disabled).",
-                                    "optional" : 1,
-                                    "type" : "boolean"
-                                 },
-                                 "shared" : {
-                                    "description" : "Shared flag from storage configuration.",
-                                    "optional" : 1,
-                                    "type" : "boolean"
-                                 },
-                                 "storage" : {
-                                    "description" : "The storage identifier.",
-                                    "format" : "pve-storage-id",
-                                    "type" : "string"
-                                 },
-                                 "total" : {
-                                    "description" : "Total storage space in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "type" : {
-                                    "description" : "Storage type.",
-                                    "type" : "string"
-                                 },
-                                 "used" : {
-                                    "description" : "Used storage space in bytes.",
-                                    "optional" : 1,
-                                    "renderer" : "bytes",
-                                    "type" : "integer"
-                                 },
-                                 "used_fraction" : {
-                                    "description" : "Used fraction (used/total).",
-                                    "optional" : 1,
-                                    "renderer" : "fraction_as_percentage",
-                                    "type" : "number"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{storage}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/storage",
-                  "text" : "storage"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Remove an LVM Volume Group.",
-                                    "method" : "DELETE",
-                                    "name" : "delete",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cleanup-config" : {
-                                             "default" : 0,
-                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "cleanup-disks" : {
-                                             "default" : 0,
-                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/disks/lvm/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List LVM Volume Groups",
-                              "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" : {
-                                 "properties" : {
-                                    "children" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "children" : {
-                                                "description" : "The underlying physical volumes",
-                                                "items" : {
-                                                   "properties" : {
-                                                      "free" : {
-                                                         "description" : "The free bytes in the physical volume",
-                                                         "type" : "integer"
-                                                      },
-                                                      "leaf" : {
-                                                         "type" : "boolean"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "The name of the physical volume",
-                                                         "type" : "string"
-                                                      },
-                                                      "size" : {
-                                                         "description" : "The size of the physical volume in bytes",
-                                                         "type" : "integer"
-                                                      }
-                                                   },
-                                                   "type" : "object"
-                                                },
-                                                "optional" : 1,
-                                                "type" : "array"
-                                             },
-                                             "free" : {
-                                                "description" : "The free bytes in the volume group",
-                                                "type" : "integer"
-                                             },
-                                             "leaf" : {
-                                                "type" : "boolean"
-                                             },
-                                             "name" : {
-                                                "description" : "The name of the volume group",
-                                                "type" : "string"
-                                             },
-                                             "size" : {
-                                                "description" : "The size of the volume group in bytes",
-                                                "type" : "integer"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    },
-                                    "leaf" : {
-                                       "type" : "boolean"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create an LVM Volume Group",
-                              "method" : "POST",
-                              "name" : "create",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storage" : {
-                                       "default" : 0,
-                                       "description" : "Configure storage using the Volume Group",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "device" : {
-                                       "description" : "The block device you want to create the volume group on",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "The storage identifier.",
-                                       "format" : "pve-storage-id",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/disks/lvm",
-                        "text" : "lvm"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Remove an LVM thin pool.",
-                                    "method" : "DELETE",
-                                    "name" : "delete",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cleanup-config" : {
-                                             "default" : 0,
-                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "cleanup-disks" : {
-                                             "default" : 0,
-                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "volume-group" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/disks/lvmthin/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List LVM thinpools",
-                              "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" : {
-                                       "lv" : {
-                                          "description" : "The name of the thinpool.",
-                                          "type" : "string"
-                                       },
-                                       "lv_size" : {
-                                          "description" : "The size of the thinpool in bytes.",
-                                          "type" : "integer"
-                                       },
-                                       "metadata_size" : {
-                                          "description" : "The size of the metadata lv in bytes.",
-                                          "type" : "integer"
-                                       },
-                                       "metadata_used" : {
-                                          "description" : "The used bytes of the metadata lv.",
-                                          "type" : "integer"
-                                       },
-                                       "used" : {
-                                          "description" : "The used bytes of the thinpool.",
-                                          "type" : "integer"
-                                       },
-                                       "vg" : {
-                                          "description" : "The associated volume group.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create an LVM thinpool",
-                              "method" : "POST",
-                              "name" : "create",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storage" : {
-                                       "default" : 0,
-                                       "description" : "Configure storage using the thinpool.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "device" : {
-                                       "description" : "The block device you want to create the thinpool on.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "The storage identifier.",
-                                       "format" : "pve-storage-id",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/disks/lvmthin",
-                        "text" : "lvmthin"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Unmounts the storage and removes the mount unit.",
-                                    "method" : "DELETE",
-                                    "name" : "delete",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cleanup-config" : {
-                                             "default" : 0,
-                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "cleanup-disks" : {
-                                             "default" : 0,
-                                             "description" : "Also wipe disk so it can be repurposed afterwards.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/disks/directory/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "PVE Managed Directory storages.",
-                              "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" : {
-                                       "device" : {
-                                          "description" : "The mounted device.",
-                                          "type" : "string"
-                                       },
-                                       "options" : {
-                                          "description" : "The mount options.",
-                                          "type" : "string"
-                                       },
-                                       "path" : {
-                                          "description" : "The mount path.",
-                                          "type" : "string"
-                                       },
-                                       "type" : {
-                                          "description" : "The filesystem type.",
-                                          "type" : "string"
-                                       },
-                                       "unitfile" : {
-                                          "description" : "The path of the mount unit.",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create a Filesystem on an unused disk. Will be mounted under '/mnt/pve/NAME'.",
-                              "method" : "POST",
-                              "name" : "create",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storage" : {
-                                       "default" : 0,
-                                       "description" : "Configure storage using the directory.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "device" : {
-                                       "description" : "The block device you want to create the filesystem on.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "filesystem" : {
-                                       "default" : "ext4",
-                                       "description" : "The desired filesystem.",
-                                       "enum" : [
-                                          "ext4",
-                                          "xfs"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "name" : {
-                                       "description" : "The storage identifier.",
-                                       "format" : "pve-storage-id",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/disks/directory",
-                        "text" : "directory"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Destroy a ZFS pool.",
-                                    "method" : "DELETE",
-                                    "name" : "delete",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cleanup-config" : {
-                                             "default" : 0,
-                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "cleanup-disks" : {
-                                             "default" : 0,
-                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get details about a zpool.",
-                                    "method" : "GET",
-                                    "name" : "detail",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "name" : {
-                                             "description" : "The storage identifier.",
-                                             "format" : "pve-storage-id",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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" : {
-                                       "properties" : {
-                                          "action" : {
-                                             "description" : "Information about the recommended action to fix the state.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "children" : {
-                                             "description" : "The pool configuration information, including the vdevs for each section (e.g. spares, cache), may be nested.",
-                                             "items" : {
-                                                "properties" : {
-                                                   "cksum" : {
-                                                      "optional" : 1,
-                                                      "type" : "number"
-                                                   },
-                                                   "msg" : {
-                                                      "description" : "An optional message about the vdev.",
-                                                      "type" : "string"
-                                                   },
-                                                   "name" : {
-                                                      "description" : "The name of the vdev or section.",
-                                                      "type" : "string"
-                                                   },
-                                                   "read" : {
-                                                      "optional" : 1,
-                                                      "type" : "number"
-                                                   },
-                                                   "state" : {
-                                                      "description" : "The state of the vdev.",
-                                                      "optional" : 1,
-                                                      "type" : "string"
-                                                   },
-                                                   "write" : {
-                                                      "optional" : 1,
-                                                      "type" : "number"
-                                                   }
-                                                },
-                                                "type" : "object"
-                                             },
-                                             "type" : "array"
-                                          },
-                                          "errors" : {
-                                             "description" : "Information about the errors on the zpool.",
-                                             "type" : "string"
-                                          },
-                                          "name" : {
-                                             "description" : "The name of the zpool.",
-                                             "type" : "string"
-                                          },
-                                          "scan" : {
-                                             "description" : "Information about the last/current scrub.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "state" : {
-                                             "description" : "The state of the zpool.",
-                                             "type" : "string"
-                                          },
-                                          "status" : {
-                                             "description" : "Information about the state of the zpool.",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/disks/zfs/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List Zpools.",
-                              "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" : {
-                                       "alloc" : {
-                                          "description" : "",
-                                          "type" : "integer"
-                                       },
-                                       "dedup" : {
-                                          "description" : "",
-                                          "type" : "number"
-                                       },
-                                       "frag" : {
-                                          "description" : "",
-                                          "type" : "integer"
-                                       },
-                                       "free" : {
-                                          "description" : "",
-                                          "type" : "integer"
-                                       },
-                                       "health" : {
-                                          "description" : "",
-                                          "type" : "string"
-                                       },
-                                       "name" : {
-                                          "description" : "",
-                                          "type" : "string"
-                                       },
-                                       "size" : {
-                                          "description" : "",
-                                          "type" : "integer"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create a ZFS pool.",
-                              "method" : "POST",
-                              "name" : "create",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storage" : {
-                                       "default" : 0,
-                                       "description" : "Configure storage using the zpool.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "ashift" : {
-                                       "default" : 12,
-                                       "description" : "Pool sector size exponent.",
-                                       "maximum" : 16,
-                                       "minimum" : 9,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (9 - 16)"
-                                    },
-                                    "compression" : {
-                                       "default" : "on",
-                                       "description" : "The compression algorithm to use.",
-                                       "enum" : [
-                                          "on",
-                                          "off",
-                                          "gzip",
-                                          "lz4",
-                                          "lzjb",
-                                          "zle",
-                                          "zstd"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "devices" : {
-                                       "description" : "The block devices you want to create the zpool on.",
-                                       "format" : "string-list",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "draid-config" : {
-                                       "format" : {
-                                          "data" : {
-                                             "description" : "The number of data devices per redundancy group. (dRAID)",
-                                             "minimum" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "spares" : {
-                                             "description" : "Number of dRAID spares.",
-                                             "minimum" : 0,
-                                             "type" : "integer"
-                                          }
-                                       },
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "data=<integer> ,spares=<integer>"
-                                    },
-                                    "name" : {
-                                       "description" : "The storage identifier.",
-                                       "format" : "pve-storage-id",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "raidlevel" : {
-                                       "description" : "The RAID level to use.",
-                                       "enum" : [
-                                          "single",
-                                          "mirror",
-                                          "raid10",
-                                          "raidz",
-                                          "raidz2",
-                                          "raidz3",
-                                          "draid",
-                                          "draid2",
-                                          "draid3"
-                                       ],
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/disks/zfs",
-                        "text" : "zfs"
-                     },
-                     {
-                        "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",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "skipsmart" : {
-                                       "default" : 0,
-                                       "description" : "Skip smart checks.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "type" : {
-                                       "description" : "Only list specific types of disks.",
-                                       "enum" : [
-                                          "unused",
-                                          "journal_disks"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "or",
-                                    [
-                                       "perm",
-                                       "/",
-                                       [
-                                          "Sys.Audit",
-                                          "Datastore.Audit"
-                                       ],
-                                       "any",
-                                       1
-                                    ],
-                                    [
-                                       "perm",
-                                       "/nodes/{node}",
-                                       [
-                                          "Sys.Audit",
-                                          "Datastore.Audit"
-                                       ],
-                                       "any",
-                                       1
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "devpath" : {
-                                          "description" : "The device path",
-                                          "type" : "string"
-                                       },
-                                       "gpt" : {
-                                          "type" : "boolean"
-                                       },
-                                       "health" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "model" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "mounted" : {
-                                          "type" : "boolean"
-                                       },
-                                       "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"
-                                       },
-                                       "size" : {
-                                          "type" : "integer"
-                                       },
-                                       "used" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "vendor" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "wwn" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/disks/list",
-                        "text" : "list"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get SMART Health of a disk.",
-                              "method" : "GET",
-                              "name" : "smart",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "disk" : {
-                                       "description" : "Block device name",
-                                       "pattern" : "^/dev/[a-zA-Z0-9\\/]+$",
-                                       "type" : "string"
-                                    },
-                                    "healthonly" : {
-                                       "description" : "If true returns only the health status",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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" : {
-                                 "properties" : {
-                                    "attributes" : {
-                                       "optional" : 1,
-                                       "type" : "array"
-                                    },
-                                    "health" : {
-                                       "type" : "string"
-                                    },
-                                    "text" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/disks/smart",
-                        "text" : "smart"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Initialize Disk with GPT",
-                              "method" : "POST",
-                              "name" : "initgpt",
-                              "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>"
-                                    },
-                                    "uuid" : {
-                                       "description" : "UUID for the GPT table",
-                                       "maxLength" : 36,
-                                       "optional" : 1,
-                                       "pattern" : "[a-fA-F0-9\\-]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/disks",
-                  "text" : "disks"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List available updates.",
-                              "method" : "GET",
-                              "name" : "list_updates",
-                              "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" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "This is used to resynchronize the package index files from their sources (apt-get update).",
-                              "method" : "POST",
-                              "name" : "update_database",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "notify" : {
-                                       "default" : 0,
-                                       "description" : "Send notification mail about new packages (to email address specified for user 'root at pam').",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "quiet" : {
-                                       "default" : 0,
-                                       "description" : "Only produces output suitable for logging, omitting progress indicators.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/update",
-                        "text" : "update"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get package changelogs.",
-                              "method" : "GET",
-                              "name" : "changelog",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "Package name.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "version" : {
-                                       "description" : "Package version.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/changelog",
-                        "text" : "changelog"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get APT repository information.",
-                              "method" : "GET",
-                              "name" : "repositories",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "description" : "Result from parsing the APT repository files in /etc/apt/.",
-                                 "properties" : {
-                                    "digest" : {
-                                       "description" : "Common digest of all files.",
-                                       "type" : "string"
-                                    },
-                                    "errors" : {
-                                       "description" : "List of problematic repository files.",
-                                       "items" : {
-                                          "properties" : {
-                                             "error" : {
-                                                "description" : "The error message",
-                                                "type" : "string"
-                                             },
-                                             "path" : {
-                                                "description" : "Path to the problematic file.",
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    },
-                                    "files" : {
-                                       "description" : "List of parsed repository files.",
-                                       "items" : {
-                                          "properties" : {
-                                             "digest" : {
-                                                "description" : "Digest of the file as bytes.",
-                                                "items" : {
-                                                   "type" : "integer"
-                                                },
-                                                "type" : "array"
-                                             },
-                                             "file-type" : {
-                                                "description" : "Format of the file.",
-                                                "enum" : [
-                                                   "list",
-                                                   "sources"
-                                                ],
-                                                "type" : "string"
-                                             },
-                                             "path" : {
-                                                "description" : "Path to the problematic file.",
-                                                "type" : "string"
-                                             },
-                                             "repositories" : {
-                                                "description" : "The parsed repositories.",
-                                                "items" : {
-                                                   "properties" : {
-                                                      "Comment" : {
-                                                         "description" : "Associated comment",
-                                                         "optional" : 1,
-                                                         "type" : "string"
-                                                      },
-                                                      "Components" : {
-                                                         "description" : "List of repository components",
-                                                         "items" : {
-                                                            "type" : "string"
-                                                         },
-                                                         "optional" : 1,
-                                                         "type" : "array"
-                                                      },
-                                                      "Enabled" : {
-                                                         "description" : "Whether the repository is enabled or not",
-                                                         "type" : "boolean"
-                                                      },
-                                                      "FileType" : {
-                                                         "description" : "Format of the defining file.",
-                                                         "enum" : [
-                                                            "list",
-                                                            "sources"
-                                                         ],
-                                                         "type" : "string"
-                                                      },
-                                                      "Options" : {
-                                                         "description" : "Additional options",
-                                                         "items" : {
-                                                            "properties" : {
-                                                               "Key" : {
-                                                                  "type" : "string"
-                                                               },
-                                                               "Values" : {
-                                                                  "items" : {
-                                                                     "type" : "string"
-                                                                  },
-                                                                  "type" : "array"
-                                                               }
-                                                            },
-                                                            "type" : "object"
-                                                         },
-                                                         "optional" : 1,
-                                                         "type" : "array"
-                                                      },
-                                                      "Suites" : {
-                                                         "description" : "List of package distribuitions",
-                                                         "items" : {
-                                                            "type" : "string"
-                                                         },
-                                                         "type" : "array"
-                                                      },
-                                                      "Types" : {
-                                                         "description" : "List of package types.",
-                                                         "items" : {
-                                                            "enum" : [
-                                                               "deb",
-                                                               "deb-src"
-                                                            ],
-                                                            "type" : "string"
-                                                         },
-                                                         "type" : "array"
-                                                      },
-                                                      "URIs" : {
-                                                         "description" : "List of repository URIs.",
-                                                         "items" : {
-                                                            "type" : "string"
-                                                         },
-                                                         "type" : "array"
-                                                      }
-                                                   },
-                                                   "type" : "object"
-                                                },
-                                                "type" : "array"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    },
-                                    "infos" : {
-                                       "description" : "Additional information/warnings for APT repositories.",
-                                       "items" : {
-                                          "properties" : {
-                                             "index" : {
-                                                "description" : "Index of the associated repository within the file.",
-                                                "type" : "string"
-                                             },
-                                             "kind" : {
-                                                "description" : "Kind of the information (e.g. warning).",
-                                                "type" : "string"
-                                             },
-                                             "message" : {
-                                                "description" : "Information message.",
-                                                "type" : "string"
-                                             },
-                                             "path" : {
-                                                "description" : "Path to the associated file.",
-                                                "type" : "string"
-                                             },
-                                             "property" : {
-                                                "description" : "Property from which the info originates.",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    },
-                                    "standard-repos" : {
-                                       "description" : "List of standard repositories and their configuration status",
-                                       "items" : {
-                                          "properties" : {
-                                             "handle" : {
-                                                "description" : "Handle to identify the repository.",
-                                                "type" : "string"
-                                             },
-                                             "name" : {
-                                                "description" : "Full name of the repository.",
-                                                "type" : "string"
-                                             },
-                                             "status" : {
-                                                "description" : "Indicating enabled/disabled status, if the repository is configured.",
-                                                "optional" : 1,
-                                                "type" : "boolean"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Change the properties of a repository. Currently only allows enabling/disabling.",
-                              "method" : "POST",
-                              "name" : "change_repository",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "digest" : {
-                                       "description" : "Digest to detect modifications.",
-                                       "maxLength" : 80,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "enabled" : {
-                                       "description" : "Whether the repository should be enabled or not.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "index" : {
-                                       "description" : "Index within the file (starting from 0).",
-                                       "type" : "integer",
-                                       "typetext" : "<integer>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "path" : {
-                                       "description" : "Path to the containing file.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Add a standard repository to the configuration",
-                              "method" : "PUT",
-                              "name" : "add_repository",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "digest" : {
-                                       "description" : "Digest to detect modifications.",
-                                       "maxLength" : 80,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "handle" : {
-                                       "description" : "Handle that identifies a repository.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/repositories",
-                        "text" : "repositories"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get package information for important Proxmox packages.",
-                              "method" : "GET",
-                              "name" : "versions",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/versions",
-                        "text" : "versions"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Directory index for apt (Advanced Package Tool).",
-                        "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" : {
-                                 "id" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{id}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/apt",
-                  "text" : "apt"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Delete rule.",
-                                    "method" : "DELETE",
-                                    "name" : "delete_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "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>"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get single rule data.",
-                                    "method" : "GET",
-                                    "name" : "get_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "action" : {
-                                             "type" : "string"
-                                          },
-                                          "comment" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "dest" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "dport" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "enable" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "icmp-type" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "iface" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ipversion" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "type" : "integer"
-                                          },
-                                          "proto" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "source" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "sport" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "type" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Modify rule data.",
-                                    "method" : "PUT",
-                                    "name" : "update_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "action" : {
-                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "comment" : {
-                                             "description" : "Descriptive comment.",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "delete" : {
-                                             "description" : "A list of settings you want to delete.",
-                                             "format" : "pve-configid-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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>"
-                                          },
-                                          "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>"
-                                          },
-                                          "dport" : {
-                                             "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-dport-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "enable" : {
-                                             "description" : "Flag to enable/disable a rule.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "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",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule.",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "description" : "Use predefined standard macro.",
-                                             "maxLength" : 128,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "moveto" : {
-                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "proto" : {
-                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                             "format" : "pve-fw-protocol-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "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>"
-                                          },
-                                          "sport" : {
-                                             "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-sport-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "type" : {
-                                             "description" : "Rule type.",
-                                             "enum" : [
-                                                "in",
-                                                "out",
-                                                "group"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/nodes/{node}",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/firewall/rules/{pos}",
-                              "text" : "{pos}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List rules.",
-                              "method" : "GET",
-                              "name" : "get_rules",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "pos" : {
-                                          "type" : "integer"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{pos}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create new rule.",
-                              "method" : "POST",
-                              "name" : "create_rule",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "action" : {
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 0,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "comment" : {
-                                       "description" : "Descriptive comment.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "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>"
-                                    },
-                                    "dport" : {
-                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-dport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "enable" : {
-                                       "description" : "Flag to enable/disable a rule.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "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",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "macro" : {
-                                       "description" : "Use predefined standard macro.",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "proto" : {
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                       "format" : "pve-fw-protocol-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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>"
-                                    },
-                                    "sport" : {
-                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-sport-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "type" : {
-                                       "description" : "Rule type.",
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ],
-                                       "optional" : 0,
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/firewall/rules",
-                        "text" : "rules"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get host firewall options.",
-                              "method" : "GET",
-                              "name" : "get_options",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "properties" : {
-                                    "enable" : {
-                                       "description" : "Enable host firewall rules.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "log_level_in" : {
-                                       "description" : "Log level for incoming traffic.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "log_level_out" : {
-                                       "description" : "Log level for outgoing traffic.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "log_nf_conntrack" : {
-                                       "default" : 0,
-                                       "description" : "Enable logging of conntrack information.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ndp" : {
-                                       "default" : 0,
-                                       "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "nf_conntrack_allow_invalid" : {
-                                       "default" : 0,
-                                       "description" : "Allow invalid packets on connection tracking.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "nf_conntrack_max" : {
-                                       "default" : 262144,
-                                       "description" : "Maximum number of tracked connections.",
-                                       "minimum" : 32768,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "nf_conntrack_tcp_timeout_established" : {
-                                       "default" : 432000,
-                                       "description" : "Conntrack established timeout.",
-                                       "minimum" : 7875,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "nf_conntrack_tcp_timeout_syn_recv" : {
-                                       "default" : 60,
-                                       "description" : "Conntrack syn recv timeout.",
-                                       "maximum" : 60,
-                                       "minimum" : 30,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "nosmurfs" : {
-                                       "description" : "Enable SMURFS filter.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "protection_synflood" : {
-                                       "default" : 0,
-                                       "description" : "Enable synflood protection",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "protection_synflood_burst" : {
-                                       "default" : 1000,
-                                       "description" : "Synflood protection rate burst by ip src.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "protection_synflood_rate" : {
-                                       "default" : 200,
-                                       "description" : "Synflood protection rate syn/sec by ip src.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "smurf_log_level" : {
-                                       "description" : "Log level for SMURFS filter.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "tcp_flags_log_level" : {
-                                       "description" : "Log level for illegal tcp flags filter.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "tcpflags" : {
-                                       "default" : 0,
-                                       "description" : "Filter illegal combinations of TCP flags.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Set Firewall options.",
-                              "method" : "PUT",
-                              "name" : "set_options",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "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>"
-                                    },
-                                    "enable" : {
-                                       "description" : "Enable host firewall rules.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "log_level_in" : {
-                                       "description" : "Log level for incoming traffic.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "log_level_out" : {
-                                       "description" : "Log level for outgoing traffic.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "log_nf_conntrack" : {
-                                       "default" : 0,
-                                       "description" : "Enable logging of conntrack information.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "ndp" : {
-                                       "default" : 0,
-                                       "description" : "Enable NDP (Neighbor Discovery Protocol).",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "nf_conntrack_allow_invalid" : {
-                                       "default" : 0,
-                                       "description" : "Allow invalid packets on connection tracking.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "nf_conntrack_max" : {
-                                       "default" : 262144,
-                                       "description" : "Maximum number of tracked connections.",
-                                       "minimum" : 32768,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "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" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nosmurfs" : {
-                                       "description" : "Enable SMURFS filter.",
-                                       "optional" : 1,
-                                       "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" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "tcp_flags_log_level" : {
-                                       "description" : "Log level for illegal tcp flags filter.",
-                                       "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "tcpflags" : {
-                                       "default" : 0,
-                                       "description" : "Filter illegal combinations of TCP flags.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/firewall/options",
-                        "text" : "options"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read firewall log",
-                              "method" : "GET",
-                              "name" : "log",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "limit" : {
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "start" : {
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Syslog"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "n" : {
-                                          "description" : "Line number",
-                                          "type" : "integer"
-                                       },
-                                       "t" : {
-                                          "description" : "Line text",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/firewall/log",
-                        "text" : "log"
-                     }
-                  ],
-                  "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" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/firewall",
-                  "text" : "firewall"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Get replication job status.",
-                                    "method" : "GET",
-                                    "name" : "job_status",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                             "format" : "pve-replication-job-id",
-                                             "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
-                                       "user" : "all"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/replication/{id}/status",
-                              "text" : "status"
-                           },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read replication job log.",
-                                    "method" : "GET",
-                                    "name" : "read_job_log",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                             "format" : "pve-replication-job-id",
-                                             "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                             "type" : "string"
-                                          },
-                                          "limit" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "start" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "description" : "Requires the VM.Audit permission on /vms/<vmid>, or 'Sys.Audit' on '/nodes/<node>'",
-                                       "user" : "all"
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "n" : {
-                                                "description" : "Line number",
-                                                "type" : "integer"
-                                             },
-                                             "t" : {
-                                                "description" : "Line text",
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/replication/{id}/log",
-                              "text" : "log"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Schedule replication job to start as soon as possible.",
-                                    "method" : "POST",
-                                    "name" : "schedule_now",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                             "format" : "pve-replication-job-id",
-                                             "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/storage",
-                                          [
-                                             "Datastore.Allocate"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/replication/{id}/schedule_now",
-                              "text" : "schedule_now"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Directory index.",
-                              "method" : "GET",
-                              "name" : "index",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "id" : {
-                                       "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
-                                       "format" : "pve-replication-job-id",
-                                       "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
-                                       "type" : "string"
-                                    },
-                                    "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}/replication/{id}",
-                        "text" : "{id}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List status of all replication jobs on this node.",
-                        "method" : "GET",
-                        "name" : "status",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "guest" : {
-                                 "description" : "Only list replication jobs for this guest.",
-                                 "format" : "pve-vmid",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "id" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{id}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/replication",
-                  "text" : "replication"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Revoke existing certificate from CA.",
-                                    "method" : "DELETE",
-                                    "name" : "revoke_certificate",
-                                    "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" : "string"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Order a new certificate from ACME-compatible CA.",
-                                    "method" : "POST",
-                                    "name" : "new_certificate",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "force" : {
-                                             "default" : 0,
-                                             "description" : "Overwrite existing custom certificate.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "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" : "string"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Renew existing certificate from CA.",
-                                    "method" : "PUT",
-                                    "name" : "renew_certificate",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "force" : {
-                                             "default" : 0,
-                                             "description" : "Force renewal even if expiry is more than 30 days away.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "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" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/certificates/acme/certificate",
-                              "text" : "certificate"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "ACME 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}/certificates/acme",
-                        "text" : "acme"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get information about node's certificates.",
-                              "method" : "GET",
-                              "name" : "info",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "user" : "all"
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "filename" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "fingerprint" : {
-                                          "description" : "Certificate SHA 256 fingerprint.",
-                                          "optional" : 1,
-                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                          "type" : "string"
-                                       },
-                                       "issuer" : {
-                                          "description" : "Certificate issuer name.",
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "notafter" : {
-                                          "description" : "Certificate's notAfter timestamp (UNIX epoch).",
-                                          "optional" : 1,
-                                          "renderer" : "timestamp",
-                                          "type" : "integer"
-                                       },
-                                       "notbefore" : {
-                                          "description" : "Certificate's notBefore timestamp (UNIX epoch).",
-                                          "optional" : 1,
-                                          "renderer" : "timestamp",
-                                          "type" : "integer"
-                                       },
-                                       "pem" : {
-                                          "description" : "Certificate in PEM format",
-                                          "format" : "pem-certificate",
-                                          "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" : {
-                                             "type" : "string"
-                                          },
-                                          "optional" : 1,
-                                          "renderer" : "yaml",
-                                          "type" : "array"
-                                       },
-                                       "subject" : {
-                                          "description" : "Certificate subject name.",
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/certificates/info",
-                        "text" : "info"
-                     },
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "DELETE custom certificate chain and key.",
-                              "method" : "DELETE",
-                              "name" : "remove_custom_cert",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "restart" : {
-                                       "default" : 0,
-                                       "description" : "Restart pveproxy.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Upload or update custom certificate chain and key.",
-                              "method" : "POST",
-                              "name" : "upload_custom_cert",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "certificates" : {
-                                       "description" : "PEM encoded certificate (chain).",
-                                       "format" : "pem-certificate-chain",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "force" : {
-                                       "default" : 0,
-                                       "description" : "Overwrite existing custom or ACME certificate files.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "key" : {
-                                       "description" : "PEM encoded private key.",
-                                       "format" : "pem-string",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "restart" : {
-                                       "default" : 0,
-                                       "description" : "Restart pveproxy.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/nodes/{node}",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "properties" : {
-                                    "filename" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "fingerprint" : {
-                                       "description" : "Certificate SHA 256 fingerprint.",
-                                       "optional" : 1,
-                                       "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                       "type" : "string"
-                                    },
-                                    "issuer" : {
-                                       "description" : "Certificate issuer name.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "notafter" : {
-                                       "description" : "Certificate's notAfter timestamp (UNIX epoch).",
-                                       "optional" : 1,
-                                       "renderer" : "timestamp",
-                                       "type" : "integer"
-                                    },
-                                    "notbefore" : {
-                                       "description" : "Certificate's notBefore timestamp (UNIX epoch).",
-                                       "optional" : 1,
-                                       "renderer" : "timestamp",
-                                       "type" : "integer"
-                                    },
-                                    "pem" : {
-                                       "description" : "Certificate in PEM format",
-                                       "format" : "pem-certificate",
-                                       "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" : {
-                                          "type" : "string"
-                                       },
-                                       "optional" : 1,
-                                       "renderer" : "yaml",
-                                       "type" : "array"
-                                    },
-                                    "subject" : {
-                                       "description" : "Certificate subject name.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/certificates/custom",
-                        "text" : "custom"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Node 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}/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" : {
-                           "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"
-                              },
-                              "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"
-                              },
-                              "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"
-                              },
-                              "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"
-                              },
-                              "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"
-                              },
-                              "wakeonlan" : {
-                                 "description" : "MAC address for wake on LAN",
-                                 "format" : "mac-addr",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "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"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/version",
-                  "text" : "version"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read node status",
-                        "method" : "GET",
-                        "name" : "status",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Reboot or shutdown a node.",
-                        "method" : "POST",
-                        "name" : "node_cmd",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "command" : {
-                                 "description" : "Specify the command.",
-                                 "enum" : [
-                                    "reboot",
-                                    "shutdown"
-                                 ],
-                                 "type" : "string"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.PowerMgmt"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/status",
-                  "text" : "status"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read tap/vm network device interface counters",
-                        "method" : "GET",
-                        "name" : "netstat",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/netstat",
-                  "text" : "netstat"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Execute multiple commands in order.",
-                        "method" : "POST",
-                        "name" : "execute",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "commands" : {
-                                 "description" : "JSON encoded array of commands.",
-                                 "format" : "pve-command-batch",
-                                 "type" : "string",
-                                 "typetext" : "<string>",
-                                 "verbose_description" : "JSON encoded array of commands, where each command is an object with the following properties:\n  args:      <object>\n\n\t     A set of parameter names and their values.\n\n  method:    (GET|POST|PUT|DELETE)\n\n\t     A method related to the API endpoint (GET, POST etc.).\n\n  path:      <string>\n\n\t     A relative path to an API endpoint on this node.\n\n"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/execute",
-                  "text" : "execute"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Try to wake a node via 'wake on LAN' network packet.",
-                        "method" : "POST",
-                        "name" : "wakeonlan",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "target node for wake on LAN packet",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.PowerMgmt"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "description" : "MAC address used to assemble the WoL magic packet.",
-                           "format" : "mac-addr",
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/wakeonlan",
-                  "text" : "wakeonlan"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read node RRD statistics (returns PNG)",
-                        "method" : "GET",
-                        "name" : "rrd",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cf" : {
-                                 "description" : "The RRD consolidation function",
-                                 "enum" : [
-                                    "AVERAGE",
-                                    "MAX"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "ds" : {
-                                 "description" : "The list of datasources you want to display.",
-                                 "format" : "pve-configid-list",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "timeframe" : {
-                                 "description" : "Specify the time frame you are interested in.",
-                                 "enum" : [
-                                    "hour",
-                                    "day",
-                                    "week",
-                                    "month",
-                                    "year"
-                                 ],
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "properties" : {
-                              "filename" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/rrd",
-                  "text" : "rrd"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read node RRD statistics",
-                        "method" : "GET",
-                        "name" : "rrddata",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cf" : {
-                                 "description" : "The RRD consolidation function",
-                                 "enum" : [
-                                    "AVERAGE",
-                                    "MAX"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "timeframe" : {
-                                 "description" : "Specify the time frame you are interested in.",
-                                 "enum" : [
-                                    "hour",
-                                    "day",
-                                    "week",
-                                    "month",
-                                    "year"
-                                 ],
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/rrddata",
-                  "text" : "rrddata"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read system log",
-                        "method" : "GET",
-                        "name" : "syslog",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "limit" : {
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "service" : {
-                                 "description" : "Service ID",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "since" : {
-                                 "description" : "Display all log since this date-time string.",
-                                 "optional" : 1,
-                                 "pattern" : "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}(:\\d{2})?)?$",
-                                 "type" : "string"
-                              },
-                              "start" : {
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "until" : {
-                                 "description" : "Display all log until this date-time string.",
-                                 "optional" : 1,
-                                 "pattern" : "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}(:\\d{2})?)?$",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Syslog"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "n" : {
-                                    "description" : "Line number",
-                                    "type" : "integer"
-                                 },
-                                 "t" : {
-                                    "description" : "Line text",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cmd" : {
-                                 "default" : "login",
-                                 "description" : "Run specific command or default to login.",
-                                 "enum" : [
-                                    "ceph_install",
-                                    "login",
-                                    "upgrade"
-                                 ],
-                                 "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,
-                                 "minimum" : 16,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (16 - 2160)"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "websocket" : {
-                                 "description" : "use websocket instead of standard vnc.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "width" : {
-                                 "description" : "sets the width of the console in pixels.",
-                                 "maximum" : 4096,
-                                 "minimum" : 16,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (16 - 4096)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cert" : {
-                                 "type" : "string"
-                              },
-                              "port" : {
-                                 "type" : "integer"
-                              },
-                              "ticket" : {
-                                 "type" : "string"
-                              },
-                              "upid" : {
-                                 "type" : "string"
-                              },
-                              "user" : {
-                                 "type" : "string"
-                              }
-                           }
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/vncshell",
-                  "text" : "vncshell"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Creates a VNC Shell proxy.",
-                        "method" : "POST",
-                        "name" : "termproxy",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cmd" : {
-                                 "default" : "login",
-                                 "description" : "Run specific command or default to login.",
-                                 "enum" : [
-                                    "ceph_install",
-                                    "login",
-                                    "upgrade"
-                                 ],
-                                 "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>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "port" : {
-                                 "type" : "integer"
-                              },
-                              "ticket" : {
-                                 "type" : "string"
-                              },
-                              "upid" : {
-                                 "type" : "string"
-                              },
-                              "user" : {
-                                 "type" : "string"
-                              }
-                           }
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/termproxy",
-                  "text" : "termproxy"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Opens a websocket for VNC traffic.",
-                        "method" : "GET",
-                        "name" : "vncwebsocket",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "port" : {
-                                 "description" : "Port number returned by previous vncproxy call.",
-                                 "maximum" : 5999,
-                                 "minimum" : 5900,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (5900 - 5999)"
-                              },
-                              "vncticket" : {
-                                 "description" : "Ticket from previous call to vncproxy.",
-                                 "maxLength" : 512,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'. You also need to pass a valid ticket (vncticket)."
-                        },
-                        "returns" : {
-                           "properties" : {
-                              "port" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/vncwebsocket",
-                  "text" : "vncwebsocket"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Creates a SPICE shell.",
-                        "method" : "POST",
-                        "name" : "spiceshell",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "cmd" : {
-                                 "default" : "login",
-                                 "description" : "Run specific command or default to login.",
-                                 "enum" : [
-                                    "ceph_install",
-                                    "login",
-                                    "upgrade"
-                                 ],
-                                 "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>"
-                              },
-                              "proxy" : {
-                                 "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
-                                 "format" : "address",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "additionalProperties" : 1,
-                           "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
-                           "properties" : {
-                              "host" : {
-                                 "type" : "string"
-                              },
-                              "password" : {
-                                 "type" : "string"
-                              },
-                              "proxy" : {
-                                 "type" : "string"
-                              },
-                              "tls-port" : {
-                                 "type" : "integer"
-                              },
-                              "type" : {
-                                 "type" : "string"
-                              }
-                           }
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/spiceshell",
-                  "text" : "spiceshell"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read DNS settings.",
-                        "method" : "GET",
-                        "name" : "dns",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "dns1" : {
-                                 "description" : "First name server IP address.",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "dns2" : {
-                                 "description" : "Second name server IP address.",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "dns3" : {
-                                 "description" : "Third name server IP address.",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "search" : {
-                                 "description" : "Search domain for host-name lookup.",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Write DNS settings.",
-                        "method" : "PUT",
-                        "name" : "update_dns",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "dns1" : {
-                                 "description" : "First name server IP address.",
-                                 "format" : "ip",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dns2" : {
-                                 "description" : "Second name server IP address.",
-                                 "format" : "ip",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dns3" : {
-                                 "description" : "Third name server IP address.",
-                                 "format" : "ip",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "search" : {
-                                 "description" : "Search domain for host-name lookup.",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/dns",
-                  "text" : "dns"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read server time and time zone settings.",
-                        "method" : "GET",
-                        "name" : "time",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "localtime" : {
-                                 "description" : "Seconds since 1970-01-01 00:00:00 (local time)",
-                                 "minimum" : 1297163644,
-                                 "renderer" : "timestamp_gmt",
-                                 "type" : "integer"
-                              },
-                              "time" : {
-                                 "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
-                                 "minimum" : 1297163644,
-                                 "renderer" : "timestamp",
-                                 "type" : "integer"
-                              },
-                              "timezone" : {
-                                 "description" : "Time zone",
-                                 "type" : "string"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Set time zone.",
-                        "method" : "PUT",
-                        "name" : "set_timezone",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "timezone" : {
-                                 "description" : "Time zone. The file '/usr/share/zoneinfo/zone.tab' contains the list of valid names.",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/time",
-                  "text" : "time"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get list of appliances.",
-                        "method" : "GET",
-                        "name" : "aplinfo",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Download appliance templates.",
-                        "method" : "POST",
-                        "name" : "apl_download",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "storage" : {
-                                 "description" : "The storage where the template will be stored",
-                                 "format" : "pve-storage-id",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "template" : {
-                                 "description" : "The template which will downloaded",
-                                 "maxLength" : 255,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/storage/{storage}",
-                              [
-                                 "Datastore.AllocateTemplate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/aplinfo",
-                  "text" : "aplinfo"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Query metadata of an URL: file size, file name and mime type.",
-                        "method" : "GET",
-                        "name" : "query_url_metadata",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "url" : {
-                                 "description" : "The URL to query the metadata from.",
-                                 "pattern" : "https?://.*",
-                                 "type" : "string"
-                              },
-                              "verify-certificates" : {
-                                 "default" : 1,
-                                 "description" : "If false, no SSL/TLS certificates will be verified.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit",
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "properties" : {
-                              "filename" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "mimetype" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "size" : {
-                                 "optional" : 1,
-                                 "renderer" : "bytes",
-                                 "type" : "integer"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/query-url-metadata",
-                  "text" : "query-url-metadata"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Gather various systems information about a node",
-                        "method" : "GET",
-                        "name" : "report",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/report",
-                  "text" : "report"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "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" : {
-                                 "default" : "off",
-                                 "description" : "Issue start command even if virtual guest have 'onboot' not set or set to off.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vms" : {
-                                 "description" : "Only consider guests from this comma separated list of VMIDs.",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/startall",
-                  "text" : "startall"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Stop all VMs and Containers.",
-                        "method" : "POST",
-                        "name" : "stopall",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vms" : {
-                                 "description" : "Only consider Guests with these IDs.",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/stopall",
-                  "text" : "stopall"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Migrate all VMs and Containers.",
-                        "method" : "POST",
-                        "name" : "migrateall",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "maxworkers" : {
-                                 "description" : "Maximal number of parallel migration job. If not set use 'max_workers' from datacenter.cfg, one of both must be set!",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "target" : {
-                                 "description" : "Target node.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "vms" : {
-                                 "description" : "Only consider Guests with these IDs.",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "with-local-disks" : {
-                                 "description" : "Enable live storage migration for local disk",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.Migrate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/migrateall",
-                  "text" : "migrateall"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get the content of /etc/hosts.",
-                        "method" : "GET",
-                        "name" : "get_etc_hosts",
-                        "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" : {
-                           "properties" : {
-                              "data" : {
-                                 "description" : "The content of /etc/hosts.",
-                                 "type" : "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"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Write /etc/hosts.",
-                        "method" : "POST",
-                        "name" : "write_etc_hosts",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "data" : {
-                                 "description" : "The target content of /etc/hosts.",
-                                 "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>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/hosts",
-                  "text" : "hosts"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Node 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}",
-            "text" : "{node}"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "Cluster node index.",
-            "method" : "GET",
-            "name" : "index",
-            "parameters" : {
-               "additionalProperties" : 0
-            },
-            "permissions" : {
-               "user" : "all"
-            },
-            "returns" : {
-               "items" : {
-                  "properties" : {
-                     "cpu" : {
-                        "description" : "CPU utilization.",
-                        "optional" : 1,
-                        "renderer" : "fraction_as_percentage",
-                        "type" : "number"
-                     },
-                     "level" : {
-                        "description" : "Support level.",
-                        "optional" : 1,
-                        "type" : "string"
-                     },
-                     "maxcpu" : {
-                        "description" : "Number of available CPUs.",
-                        "optional" : 1,
-                        "type" : "integer"
-                     },
-                     "maxmem" : {
-                        "description" : "Number of available memory in bytes.",
-                        "optional" : 1,
-                        "renderer" : "bytes",
-                        "type" : "integer"
-                     },
-                     "mem" : {
-                        "description" : "Used memory in bytes.",
-                        "optional" : 1,
-                        "renderer" : "bytes",
-                        "type" : "integer"
-                     },
-                     "node" : {
-                        "description" : "The cluster node name.",
-                        "format" : "pve-node",
-                        "type" : "string"
-                     },
-                     "ssl_fingerprint" : {
-                        "description" : "The SSL fingerprint for the node certificate.",
-                        "optional" : 1,
-                        "type" : "string"
-                     },
-                     "status" : {
-                        "description" : "Node status.",
-                        "enum" : [
-                           "unknown",
-                           "online",
-                           "offline"
-                        ],
-                        "type" : "string"
-                     },
-                     "uptime" : {
-                        "description" : "Node uptime in seconds.",
-                        "optional" : 1,
-                        "renderer" : "duration",
-                        "type" : "integer"
-                     }
-                  },
-                  "type" : "object"
-               },
-               "links" : [
-                  {
-                     "href" : "{node}",
-                     "rel" : "child"
-                  }
-               ],
-               "type" : "array"
-            }
-         }
-      },
-      "leaf" : 0,
-      "path" : "/nodes",
-      "text" : "nodes"
-   },
-   {
-      "children" : [
-         {
-            "info" : {
-               "DELETE" : {
-                  "allowtoken" : 1,
-                  "description" : "Delete storage configuration.",
-                  "method" : "DELETE",
-                  "name" : "delete",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "storage" : {
-                           "description" : "The storage identifier.",
-                           "format" : "pve-storage-id",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/storage",
-                        [
-                           "Datastore.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               },
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Read storage configuration.",
-                  "method" : "GET",
-                  "name" : "read",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "storage" : {
-                           "description" : "The storage identifier.",
-                           "format" : "pve-storage-id",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/storage/{storage}",
-                        [
-                           "Datastore.Allocate"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 1,
-                  "description" : "Update storage configuration.",
-                  "method" : "PUT",
-                  "name" : "update",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "blocksize" : {
-                           "description" : "block size",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "bwlimit" : {
-                           "description" : "Set bandwidth/io limits various operations.",
-                           "format" : {
-                              "clone" : {
-                                 "description" : "bandwidth limit in KiB/s for cloning disks",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "default" : {
-                                 "description" : "default bandwidth limit in KiB/s",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "migration" : {
-                                 "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "move" : {
-                                 "description" : "bandwidth limit in KiB/s for moving disks",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              },
-                              "restore" : {
-                                 "description" : "bandwidth limit in KiB/s for restoring guests from backups",
-                                 "format_description" : "LIMIT",
-                                 "minimum" : "0",
-                                 "optional" : 1,
-                                 "type" : "number"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
-                        },
-                        "comstar_hg" : {
-                           "description" : "host group for comstar views",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "comstar_tg" : {
-                           "description" : "target group for comstar views",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "content" : {
-                           "description" : "Allowed content types.\n\nNOTE: the value 'rootdir' is used for Containers, and value 'images' for VMs.\n",
-                           "format" : "pve-storage-content-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "data-pool" : {
-                           "description" : "Data Pool (for erasure coding only)",
-                           "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 storage.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "domain" : {
-                           "description" : "CIFS domain.",
-                           "maxLength" : 256,
-                           "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>"
-                        },
-                        "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",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "fs-name" : {
-                           "description" : "The Ceph filesystem name.",
-                           "format" : "pve-configid",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "fuse" : {
-                           "description" : "Mount CephFS through FUSE.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "is_mountpoint" : {
-                           "default" : "no",
-                           "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "keyring" : {
-                           "description" : "Client keyring contents (for external clusters).",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "krbd" : {
-                           "description" : "Always access rbd through krbd kernel module.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "lio_tpg" : {
-                           "description" : "target portal group for Linux LIO targets",
-                           "optional" : 1,
-                           "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>"
-                        },
-                        "max-protected-backups" : {
-                           "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
-                           "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
-                           "minimum" : -1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (-1 - N)"
-                        },
-                        "maxfiles" : {
-                           "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "mkdir" : {
-                           "default" : "yes",
-                           "description" : "Create the directory if it doesn't exist.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "monhost" : {
-                           "description" : "IP addresses of monitors (for external clusters).",
-                           "format" : "pve-storage-portal-dns-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "mountpoint" : {
-                           "description" : "mount point",
-                           "format" : "pve-storage-path",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "namespace" : {
-                           "description" : "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",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "nowritecache" : {
-                           "description" : "disable write caching on the target",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "options" : {
-                           "description" : "NFS mount options (see 'man nfs')",
-                           "format" : "pve-storage-options",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "password" : {
-                           "description" : "Password for accessing the share/datastore.",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "pool" : {
-                           "description" : "Pool.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "port" : {
-                           "default" : 8007,
-                           "description" : "For non default port.",
-                           "maximum" : 65535,
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - 65535)"
-                        },
-                        "preallocation" : {
-                           "default" : "metadata",
-                           "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
-                           "enum" : [
-                              "off",
-                              "metadata",
-                              "falloc",
-                              "full"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "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.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "saferemove_throughput" : {
-                           "description" : "Wipe throughput (cstream -t parameter value).",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "server" : {
-                           "description" : "Server IP or DNS name.",
-                           "format" : "pve-storage-server",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "server2" : {
-                           "description" : "Backup volfile server IP or DNS name.",
-                           "format" : "pve-storage-server",
-                           "optional" : 1,
-                           "requires" : "server",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "shared" : {
-                           "description" : "Mark storage as shared.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "smbversion" : {
-                           "default" : "default",
-                           "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
-                           "enum" : [
-                              "default",
-                              "2.0",
-                              "2.1",
-                              "3",
-                              "3.0",
-                              "3.11"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "sparse" : {
-                           "description" : "use sparse volumes",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "storage" : {
-                           "description" : "The storage identifier.",
-                           "format" : "pve-storage-id",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "subdir" : {
-                           "description" : "Subdir to mount.",
-                           "format" : "pve-storage-path",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "tagged_only" : {
-                           "description" : "Only use logical volumes tagged with 'pve-vm-ID'.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "transport" : {
-                           "description" : "Gluster transport: tcp or rdma",
-                           "enum" : [
-                              "tcp",
-                              "rdma",
-                              "unix"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "username" : {
-                           "description" : "RBD Id.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/storage",
-                        [
-                           "Datastore.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "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"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/storage/{storage}",
-            "text" : "{storage}"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "Storage index.",
-            "method" : "GET",
-            "name" : "index",
-            "parameters" : {
-               "additionalProperties" : 0,
-               "properties" : {
-                  "type" : {
-                     "description" : "Only list storage of specific type",
-                     "enum" : [
-                        "btrfs",
-                        "cephfs",
-                        "cifs",
-                        "dir",
-                        "glusterfs",
-                        "iscsi",
-                        "iscsidirect",
-                        "lvm",
-                        "lvmthin",
-                        "nfs",
-                        "pbs",
-                        "rbd",
-                        "zfs",
-                        "zfspool"
-                     ],
-                     "optional" : 1,
-                     "type" : "string"
-                  }
-               }
-            },
-            "permissions" : {
-               "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/<storage>'",
-               "user" : "all"
-            },
-            "returns" : {
-               "items" : {
-                  "properties" : {
-                     "storage" : {
-                        "type" : "string"
-                     }
-                  },
-                  "type" : "object"
-               },
-               "links" : [
-                  {
-                     "href" : "{storage}",
-                     "rel" : "child"
-                  }
-               ],
-               "type" : "array"
-            }
-         },
-         "POST" : {
-            "allowtoken" : 1,
-            "description" : "Create a new storage.",
-            "method" : "POST",
-            "name" : "create",
-            "parameters" : {
-               "additionalProperties" : 0,
-               "properties" : {
-                  "authsupported" : {
-                     "description" : "Authsupported.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "base" : {
-                     "description" : "Base volume. This volume is automatically activated.",
-                     "format" : "pve-volume-id",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "blocksize" : {
-                     "description" : "block size",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "bwlimit" : {
-                     "description" : "Set bandwidth/io limits various operations.",
-                     "format" : {
-                        "clone" : {
-                           "description" : "bandwidth limit in KiB/s for cloning disks",
-                           "format_description" : "LIMIT",
-                           "minimum" : "0",
-                           "optional" : 1,
-                           "type" : "number"
-                        },
-                        "default" : {
-                           "description" : "default bandwidth limit in KiB/s",
-                           "format_description" : "LIMIT",
-                           "minimum" : "0",
-                           "optional" : 1,
-                           "type" : "number"
-                        },
-                        "migration" : {
-                           "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
-                           "format_description" : "LIMIT",
-                           "minimum" : "0",
-                           "optional" : 1,
-                           "type" : "number"
-                        },
-                        "move" : {
-                           "description" : "bandwidth limit in KiB/s for moving disks",
-                           "format_description" : "LIMIT",
-                           "minimum" : "0",
-                           "optional" : 1,
-                           "type" : "number"
-                        },
-                        "restore" : {
-                           "description" : "bandwidth limit in KiB/s for restoring guests from backups",
-                           "format_description" : "LIMIT",
-                           "minimum" : "0",
-                           "optional" : 1,
-                           "type" : "number"
-                        }
-                     },
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
-                  },
-                  "comstar_hg" : {
-                     "description" : "host group for comstar views",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "comstar_tg" : {
-                     "description" : "target group for comstar views",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "content" : {
-                     "description" : "Allowed content types.\n\nNOTE: the value 'rootdir' is used for Containers, and value 'images' for VMs.\n",
-                     "format" : "pve-storage-content-list",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "data-pool" : {
-                     "description" : "Data Pool (for erasure coding only)",
-                     "optional" : 1,
-                     "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" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "domain" : {
-                     "description" : "CIFS domain.",
-                     "maxLength" : 256,
-                     "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",
-                     "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",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "fs-name" : {
-                     "description" : "The Ceph filesystem name.",
-                     "format" : "pve-configid",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "fuse" : {
-                     "description" : "Mount CephFS through FUSE.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "is_mountpoint" : {
-                     "default" : "no",
-                     "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "iscsiprovider" : {
-                     "description" : "iscsi provider",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "keyring" : {
-                     "description" : "Client keyring contents (for external clusters).",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "krbd" : {
-                     "description" : "Always access rbd through krbd kernel module.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "lio_tpg" : {
-                     "description" : "target portal group for Linux LIO targets",
-                     "optional" : 1,
-                     "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>"
-                  },
-                  "max-protected-backups" : {
-                     "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
-                     "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
-                     "minimum" : -1,
-                     "optional" : 1,
-                     "type" : "integer",
-                     "typetext" : "<integer> (-1 - N)"
-                  },
-                  "maxfiles" : {
-                     "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
-                     "minimum" : 0,
-                     "optional" : 1,
-                     "type" : "integer",
-                     "typetext" : "<integer> (0 - N)"
-                  },
-                  "mkdir" : {
-                     "default" : "yes",
-                     "description" : "Create the directory if it doesn't exist.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "monhost" : {
-                     "description" : "IP addresses of monitors (for external clusters).",
-                     "format" : "pve-storage-portal-dns-list",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "mountpoint" : {
-                     "description" : "mount point",
-                     "format" : "pve-storage-path",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "namespace" : {
-                     "description" : "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",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "nowritecache" : {
-                     "description" : "disable write caching on the target",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "options" : {
-                     "description" : "NFS mount options (see 'man nfs')",
-                     "format" : "pve-storage-options",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "password" : {
-                     "description" : "Password for accessing the share/datastore.",
-                     "maxLength" : 256,
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "path" : {
-                     "description" : "File system path.",
-                     "format" : "pve-storage-path",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "pool" : {
-                     "description" : "Pool.",
-                     "optional" : 1,
-                     "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",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "preallocation" : {
-                     "default" : "metadata",
-                     "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
-                     "enum" : [
-                        "off",
-                        "metadata",
-                        "falloc",
-                        "full"
-                     ],
-                     "optional" : 1,
-                     "type" : "string"
-                  },
-                  "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.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "saferemove_throughput" : {
-                     "description" : "Wipe throughput (cstream -t parameter value).",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "server" : {
-                     "description" : "Server IP or DNS name.",
-                     "format" : "pve-storage-server",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "server2" : {
-                     "description" : "Backup volfile server IP or DNS name.",
-                     "format" : "pve-storage-server",
-                     "optional" : 1,
-                     "requires" : "server",
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "share" : {
-                     "description" : "CIFS share.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "shared" : {
-                     "description" : "Mark storage as shared.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "smbversion" : {
-                     "default" : "default",
-                     "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
-                     "enum" : [
-                        "default",
-                        "2.0",
-                        "2.1",
-                        "3",
-                        "3.0",
-                        "3.11"
-                     ],
-                     "optional" : 1,
-                     "type" : "string"
-                  },
-                  "sparse" : {
-                     "description" : "use sparse volumes",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "storage" : {
-                     "description" : "The storage identifier.",
-                     "format" : "pve-storage-id",
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "subdir" : {
-                     "description" : "Subdir to mount.",
-                     "format" : "pve-storage-path",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "tagged_only" : {
-                     "description" : "Only use logical volumes tagged with 'pve-vm-ID'.",
-                     "optional" : 1,
-                     "type" : "boolean",
-                     "typetext" : "<boolean>"
-                  },
-                  "target" : {
-                     "description" : "iSCSI target.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "thinpool" : {
-                     "description" : "LVM thin pool LV name.",
-                     "format" : "pve-storage-vgname",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "transport" : {
-                     "description" : "Gluster transport: tcp or rdma",
-                     "enum" : [
-                        "tcp",
-                        "rdma",
-                        "unix"
-                     ],
-                     "optional" : 1,
-                     "type" : "string"
-                  },
-                  "type" : {
-                     "description" : "Storage type.",
-                     "enum" : [
-                        "btrfs",
-                        "cephfs",
-                        "cifs",
-                        "dir",
-                        "glusterfs",
-                        "iscsi",
-                        "iscsidirect",
-                        "lvm",
-                        "lvmthin",
-                        "nfs",
-                        "pbs",
-                        "rbd",
-                        "zfs",
-                        "zfspool"
-                     ],
-                     "type" : "string"
-                  },
-                  "username" : {
-                     "description" : "RBD Id.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "vgname" : {
-                     "description" : "Volume group name.",
-                     "format" : "pve-storage-vgname",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "volume" : {
-                     "description" : "Glusterfs Volume.",
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  }
-               },
-               "type" : "object"
-            },
-            "permissions" : {
-               "check" : [
-                  "perm",
-                  "/storage",
-                  [
-                     "Datastore.Allocate"
-                  ]
-               ]
-            },
-            "protected" : 1,
-            "returns" : {
-               "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"
-            }
-         }
-      },
-      "leaf" : 0,
-      "path" : "/storage",
-      "text" : "storage"
-   },
-   {
-      "children" : [
-         {
-            "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" : {
-                                    "multiple" : {
-                                       "default" : 0,
-                                       "description" : "Request all entries as an array.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "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"
-                                    },
-                                    "types" : {
-                                       "description" : "Array of the user configured TFA types, if any. Only available if 'multiple' was not passed.",
-                                       "items" : {
-                                          "description" : "A TFA type.",
-                                          "enum" : [
-                                             "totp",
-                                             "u2f",
-                                             "yubico",
-                                             "webauthn",
-                                             "recovedry"
-                                          ],
-                                          "type" : "string"
-                                       },
-                                       "optional" : 1,
-                                       "type" : "array"
-                                    },
-                                    "user" : {
-                                       "description" : "The type of TFA the user has set, if any. Only set if 'multiple' was not passed.",
-                                       "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"
-                                          ],
-                                          [
-                                             "userid-group",
-                                             [
-                                                "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"
-                                          ],
-                                          [
-                                             "userid-group",
-                                             [
-                                                "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"
-                                          ],
-                                          [
-                                             "userid-group",
-                                             [
-                                                "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"
-                                          ],
-                                          [
-                                             "userid-group",
-                                             [
-                                                "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"
-                                    ],
-                                    [
-                                       "userid-group",
-                                       [
-                                          "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "userid" : {
-                                 "description" : "User ID",
-                                 "format" : "pve-userid",
-                                 "maxLength" : 64,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "and",
-                              [
-                                 "userid-param",
-                                 "Realm.AllocateUser"
-                              ],
-                              [
-                                 "userid-group",
-                                 [
-                                    "User.Modify"
-                                 ]
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get user configuration.",
-                        "method" : "GET",
-                        "name" : "read_user",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "userid" : {
-                                 "description" : "User ID",
-                                 "format" : "pve-userid",
-                                 "maxLength" : 64,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "userid-group",
-                              [
-                                 "User.Modify",
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "email" : {
-                                 "format" : "email-opt",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "enable" : {
-                                 "default" : 1,
-                                 "description" : "Enable the account (default). You can set this to '0' to disable the account",
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "expire" : {
-                                 "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              },
-                              "firstname" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "groups" : {
-                                 "items" : {
-                                    "format" : "pve-groupid",
-                                    "type" : "string"
-                                 },
-                                 "optional" : 1,
-                                 "type" : "array"
-                              },
-                              "keys" : {
-                                 "description" : "Keys for two factor auth (yubico).",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "lastname" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "tokens" : {
-                                 "additionalProperties" : {
-                                    "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"
-                                 },
-                                 "optional" : 1,
-                                 "type" : "object"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update user configuration.",
-                        "method" : "PUT",
-                        "name" : "update_user",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "append" : {
-                                 "optional" : 1,
-                                 "requires" : "groups",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "email" : {
-                                 "format" : "email-opt",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enable" : {
-                                 "default" : 1,
-                                 "description" : "Enable the account (default). You can set this to '0' to disable the account",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "expire" : {
-                                 "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "firstname" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "groups" : {
-                                 "format" : "pve-groupid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "keys" : {
-                                 "description" : "Keys for two factor auth (yubico).",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "lastname" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "userid" : {
-                                 "description" : "User ID",
-                                 "format" : "pve-userid",
-                                 "maxLength" : 64,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "userid-group",
-                              [
-                                 "User.Modify"
-                              ],
-                              "groups_param",
-                              "update"
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/access/users/{userid}",
-                  "text" : "{userid}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "User index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "enabled" : {
-                           "description" : "Optional filter for enable property.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "full" : {
-                           "default" : 0,
-                           "description" : "Include group and token information.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "description" : "The returned list is restricted to users where you have 'User.Modify' or 'Sys.Audit' permissions on '/access/groups' or on a group the user belongs too. But it always includes the current (authenticated) user.",
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "comment" : {
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "email" : {
-                              "format" : "email-opt",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "enable" : {
-                              "default" : 1,
-                              "description" : "Enable the account (default). You can set this to '0' to disable the account",
-                              "optional" : 1,
-                              "type" : "boolean"
-                           },
-                           "expire" : {
-                              "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                              "minimum" : 0,
-                              "optional" : 1,
-                              "type" : "integer"
-                           },
-                           "firstname" : {
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "groups" : {
-                              "format" : "pve-groupid-list",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "keys" : {
-                              "description" : "Keys for two factor auth (yubico).",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "lastname" : {
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "realm-type" : {
-                              "description" : "The type of the users realm",
-                              "format" : "pve-realm",
-                              "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",
-                              "maxLength" : 64,
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{userid}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new user.",
-                  "method" : "POST",
-                  "name" : "create_user",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "email" : {
-                           "format" : "email-opt",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "enable" : {
-                           "default" : 1,
-                           "description" : "Enable the account (default). You can set this to '0' to disable the account",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "expire" : {
-                           "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "firstname" : {
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "groups" : {
-                           "format" : "pve-groupid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "keys" : {
-                           "description" : "Keys for two factor auth (yubico).",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "lastname" : {
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "password" : {
-                           "description" : "Initial password.",
-                           "maxLength" : 64,
-                           "minLength" : 5,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "userid" : {
-                           "description" : "User ID",
-                           "format" : "pve-userid",
-                           "maxLength" : 64,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "and",
-                        [
-                           "userid-param",
-                           "Realm.AllocateUser"
-                        ],
-                        [
-                           "userid-group",
-                           [
-                              "User.Modify"
-                           ],
-                           "groups_param",
-                           "create"
-                        ]
-                     ],
-                     "description" : "You need 'Realm.AllocateUser' on '/access/realm/<realm>' on the realm of user <userid>, and 'User.Modify' permissions to '/access/groups/<group>' for any group specified (or 'User.Modify' on '/access/groups' if you pass no groups."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/users",
-            "text" : "users"
-         },
-         {
-            "children" : [
-               {
-                  "info" : {
-                     "DELETE" : {
-                        "allowtoken" : 1,
-                        "description" : "Delete group.",
-                        "method" : "DELETE",
-                        "name" : "delete_group",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "groupid" : {
-                                 "format" : "pve-groupid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/groups",
-                              [
-                                 "Group.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get group configuration.",
-                        "method" : "GET",
-                        "name" : "read_group",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "groupid" : {
-                                 "format" : "pve-groupid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/groups",
-                              [
-                                 "Sys.Audit",
-                                 "Group.Allocate"
-                              ],
-                              "any",
-                              1
-                           ]
-                        },
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "members" : {
-                                 "items" : {
-                                    "description" : "User ID",
-                                    "format" : "pve-userid",
-                                    "maxLength" : 64,
-                                    "type" : "string"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update group data.",
-                        "method" : "PUT",
-                        "name" : "update_group",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "groupid" : {
-                                 "format" : "pve-groupid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/groups",
-                              [
-                                 "Group.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/access/groups/{groupid}",
-                  "text" : "{groupid}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Group index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "description" : "The returned list is restricted to groups where you have 'User.Modify', 'Sys.Audit'  or 'Group.Allocate' permissions on /access/groups/<group>.",
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "comment" : {
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "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"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{groupid}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new group.",
-                  "method" : "POST",
-                  "name" : "create_group",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "groupid" : {
-                           "format" : "pve-groupid",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/access/groups",
-                        [
-                           "Group.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/groups",
-            "text" : "groups"
-         },
-         {
-            "children" : [
-               {
-                  "info" : {
-                     "DELETE" : {
-                        "allowtoken" : 1,
-                        "description" : "Delete role.",
-                        "method" : "DELETE",
-                        "name" : "delete_role",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "roleid" : {
-                                 "format" : "pve-roleid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get role configuration.",
-                        "method" : "GET",
-                        "name" : "read_role",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "roleid" : {
-                                 "format" : "pve-roleid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "Datastore.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Datastore.AllocateSpace" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Datastore.AllocateTemplate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Datastore.Audit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Group.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Permissions.Modify" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Pool.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Pool.Audit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Realm.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Realm.AllocateUser" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "SDN.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "SDN.Audit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.Audit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.Console" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.Incoming" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.Modify" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.PowerMgmt" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "Sys.Syslog" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "User.Modify" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Allocate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Audit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Backup" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Clone" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.CDROM" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.CPU" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.Cloudinit" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.Disk" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.HWType" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.Memory" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.Network" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Config.Options" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Console" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Migrate" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Monitor" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.PowerMgmt" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Snapshot" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "VM.Snapshot.Rollback" : {
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update an existing role.",
-                        "method" : "PUT",
-                        "name" : "update_role",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "append" : {
-                                 "optional" : 1,
-                                 "requires" : "privs",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "privs" : {
-                                 "format" : "pve-priv-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "roleid" : {
-                                 "format" : "pve-roleid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/access/roles/{roleid}",
-                  "text" : "{roleid}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Role index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "privs" : {
-                              "format" : "pve-priv-list",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "roleid" : {
-                              "format" : "pve-roleid",
-                              "type" : "string"
-                           },
-                           "special" : {
-                              "default" : 0,
-                              "optional" : 1,
-                              "type" : "boolean"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{roleid}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new role.",
-                  "method" : "POST",
-                  "name" : "create_role",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "privs" : {
-                           "format" : "pve-priv-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "roleid" : {
-                           "format" : "pve-roleid",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/access",
-                        [
-                           "Sys.Modify"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/roles",
-            "text" : "roles"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Get Access Control List (ACLs).",
-                  "method" : "GET",
-                  "name" : "read_acl",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "description" : "The returned list is restricted to objects where you have rights to modify permissions.",
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "additionalProperties" : 0,
-                        "properties" : {
-                           "path" : {
-                              "description" : "Access control path",
-                              "type" : "string"
-                           },
-                           "propagate" : {
-                              "default" : 1,
-                              "description" : "Allow to propagate (inherit) permissions.",
-                              "optional" : 1,
-                              "type" : "boolean"
-                           },
-                           "roleid" : {
-                              "type" : "string"
-                           },
-                           "type" : {
-                              "enum" : [
-                                 "user",
-                                 "group",
-                                 "token"
-                              ],
-                              "type" : "string"
-                           },
-                           "ugid" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "type" : "array"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 1,
-                  "description" : "Update Access Control List (add or remove permissions).",
-                  "method" : "PUT",
-                  "name" : "update_acl",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "delete" : {
-                           "description" : "Remove permissions (instead of adding it).",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "groups" : {
-                           "description" : "List of groups.",
-                           "format" : "pve-groupid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "path" : {
-                           "description" : "Access control path",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "propagate" : {
-                           "default" : 1,
-                           "description" : "Allow to propagate (inherit) permissions.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "roles" : {
-                           "description" : "List of roles.",
-                           "format" : "pve-roleid-list",
-                           "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",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm-modify",
-                        "{path}"
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/access/acl",
-            "text" : "acl"
-         },
-         {
-            "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" : "DEPRECATED: use 'remove-vanished' instead. If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync and removing all locally modified properties of synced users. If not set, only syncs information which is present in the synced data, and does not delete or modify anything else.",
-                                       "optional" : "1",
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "purge" : {
-                                       "description" : "DEPRECATED: use 'remove-vanished' instead. 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>"
-                                    },
-                                    "remove-vanished" : {
-                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync.",
-                                       "optional" : "1",
-                                       "pattern" : "(?:(?:acl|properties|entry);)*(?:acl|properties|entry)",
-                                       "type" : "string",
-                                       "typetext" : "[acl];[properties];[entry]"
-                                    },
-                                    "scope" : {
-                                       "description" : "Select what to sync.",
-                                       "enum" : [
-                                          "users",
-                                          "groups",
-                                          "both"
-                                       ],
-                                       "optional" : "1",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "and",
-                                    [
-                                       "perm",
-                                       "/access/realm/{realm}",
-                                       [
-                                          "Realm.AllocateUser"
-                                       ]
-                                    ],
-                                    [
-                                       "perm",
-                                       "/access/groups",
-                                       [
-                                          "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",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "realm" : {
-                                 "description" : "Authentication domain ID",
-                                 "format" : "pve-realm",
-                                 "maxLength" : 32,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/realm",
-                              [
-                                 "Realm.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get auth server configuration.",
-                        "method" : "GET",
-                        "name" : "read",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "realm" : {
-                                 "description" : "Authentication domain ID",
-                                 "format" : "pve-realm",
-                                 "maxLength" : 32,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/realm",
-                              [
-                                 "Realm.Allocate",
-                                 "Sys.Audit"
-                              ],
-                              "any",
-                              1
-                           ]
-                        },
-                        "returns" : {}
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update authentication server settings.",
-                        "method" : "PUT",
-                        "name" : "update",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "acr-values" : {
-                                 "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "autocreate" : {
-                                 "default" : 0,
-                                 "description" : "Automatically create users if they do not exist.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "base_dn" : {
-                                 "description" : "LDAP base domain name",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                                 "type" : "string"
-                              },
-                              "bind_dn" : {
-                                 "description" : "LDAP bind domain name",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                                 "type" : "string"
-                              },
-                              "capath" : {
-                                 "default" : "/etc/ssl/certs",
-                                 "description" : "Path to the CA certificate store",
-                                 "optional" : 1,
-                                 "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,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "certkey" : {
-                                 "description" : "Path to the client certificate key",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "client-id" : {
-                                 "description" : "OpenID Client ID",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "client-key" : {
-                                 "description" : "OpenID Client Key",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "default" : {
-                                 "description" : "Use this as default realm",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "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>"
-                              },
-                              "domain" : {
-                                 "description" : "AD domain name",
-                                 "maxLength" : 256,
-                                 "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>"
-                              },
-                              "issuer-url" : {
-                                 "description" : "OpenID Issuer Url",
-                                 "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,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 65535)"
-                              },
-                              "prompt" : {
-                                 "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
-                                 "optional" : 1,
-                                 "pattern" : "(?:none|login|consent|select_account|\\S+)",
-                                 "type" : "string"
-                              },
-                              "realm" : {
-                                 "description" : "Authentication domain ID",
-                                 "format" : "pve-realm",
-                                 "maxLength" : 32,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "scopes" : {
-                                 "default" : "email profile",
-                                 "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "secure" : {
-                                 "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "server1" : {
-                                 "description" : "Server IP address (or DNS name)",
-                                 "format" : "address",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "server2" : {
-                                 "description" : "Fallback Server IP address (or DNS name)",
-                                 "format" : "address",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "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>] [,remove-vanished=[acl];[properties];[entry]] [,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",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "type=<TFATYPE> [,digits=<COUNT>] [,id=<ID>] [,key=<KEY>] [,step=<SECONDS>] [,url=<URL>]"
-                              },
-                              "user_attr" : {
-                                 "description" : "LDAP user attribute name",
-                                 "maxLength" : 256,
-                                 "optional" : 1,
-                                 "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",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              }
-                           },
-                           "type" : "object"
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/access/realm",
-                              [
-                                 "Realm.Allocate"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/access/domains/{realm}",
-                  "text" : "{realm}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Authentication domain index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "description" : "Anyone can access that, because we need that list for the login box (before the user is authenticated).",
-                     "user" : "world"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "comment" : {
-                              "description" : "A comment. The GUI use this text when you select a domain (Realm) on the login window.",
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "realm" : {
-                              "type" : "string"
-                           },
-                           "tfa" : {
-                              "description" : "Two-factor authentication provider.",
-                              "enum" : [
-                                 "yubico",
-                                 "oath"
-                              ],
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "type" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{realm}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Add an authentication server.",
-                  "method" : "POST",
-                  "name" : "create",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "acr-values" : {
-                           "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "autocreate" : {
-                           "default" : 0,
-                           "description" : "Automatically create users if they do not exist.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "base_dn" : {
-                           "description" : "LDAP base domain name",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                           "type" : "string"
-                        },
-                        "bind_dn" : {
-                           "description" : "LDAP bind domain name",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                           "type" : "string"
-                        },
-                        "capath" : {
-                           "default" : "/etc/ssl/certs",
-                           "description" : "Path to the CA certificate store",
-                           "optional" : 1,
-                           "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,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "certkey" : {
-                           "description" : "Path to the client certificate key",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "client-id" : {
-                           "description" : "OpenID Client ID",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "client-key" : {
-                           "description" : "OpenID Client Key",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "comment" : {
-                           "description" : "Description.",
-                           "maxLength" : 4096,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "default" : {
-                           "description" : "Use this as default realm",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "domain" : {
-                           "description" : "AD domain name",
-                           "maxLength" : 256,
-                           "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>"
-                        },
-                        "issuer-url" : {
-                           "description" : "OpenID Issuer Url",
-                           "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,
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - 65535)"
-                        },
-                        "prompt" : {
-                           "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
-                           "optional" : 1,
-                           "pattern" : "(?:none|login|consent|select_account|\\S+)",
-                           "type" : "string"
-                        },
-                        "realm" : {
-                           "description" : "Authentication domain ID",
-                           "format" : "pve-realm",
-                           "maxLength" : 32,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "scopes" : {
-                           "default" : "email profile",
-                           "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "secure" : {
-                           "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "server1" : {
-                           "description" : "Server IP address (or DNS name)",
-                           "format" : "address",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "server2" : {
-                           "description" : "Fallback Server IP address (or DNS name)",
-                           "format" : "address",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "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>] [,remove-vanished=[acl];[properties];[entry]] [,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",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "type=<TFATYPE> [,digits=<COUNT>] [,id=<ID>] [,key=<KEY>] [,step=<SECONDS>] [,url=<URL>]"
-                        },
-                        "type" : {
-                           "description" : "Realm type.",
-                           "enum" : [
-                              "ad",
-                              "ldap",
-                              "openid",
-                              "pam",
-                              "pve"
-                           ],
-                           "type" : "string"
-                        },
-                        "user_attr" : {
-                           "description" : "LDAP user attribute name",
-                           "maxLength" : 256,
-                           "optional" : 1,
-                           "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>"
-                        },
-                        "username-claim" : {
-                           "description" : "OpenID claim used to generate the unique username.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "verify" : {
-                           "default" : 0,
-                           "description" : "Verify the server's SSL certificate",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/access/realm",
-                        [
-                           "Realm.Allocate"
-                        ]
-                     ]
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/domains",
-            "text" : "domains"
-         },
-         {
-            "children" : [
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Get the OpenId Authorization Url for the specified realm.",
-                        "method" : "POST",
-                        "name" : "auth_url",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "realm" : {
-                                 "description" : "Authentication domain ID",
-                                 "format" : "pve-realm",
-                                 "maxLength" : 32,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "redirect-url" : {
-                                 "description" : "Redirection Url. The client should set this to the used server url (location.origin).",
-                                 "maxLength" : 255,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "world"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "description" : "Redirection URL.",
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/access/openid/auth-url",
-                  "text" : "auth-url"
-               },
-               {
-                  "info" : {
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : " Verify OpenID authorization code and create a ticket.",
-                        "method" : "POST",
-                        "name" : "login",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "code" : {
-                                 "description" : "OpenId authorization code.",
-                                 "maxLength" : 4096,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "redirect-url" : {
-                                 "description" : "Redirection Url. The client should set this to the used server url (location.origin).",
-                                 "maxLength" : 255,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "state" : {
-                                 "description" : "OpenId state.",
-                                 "maxLength" : 1024,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "world"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "properties" : {
-                              "CSRFPreventionToken" : {
-                                 "type" : "string"
-                              },
-                              "cap" : {
-                                 "type" : "object"
-                              },
-                              "clustername" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "ticket" : {
-                                 "type" : "string"
-                              },
-                              "username" : {
-                                 "type" : "string"
-                              }
-                           }
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/access/openid/login",
-                  "text" : "login"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "subdir" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{subdir}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/openid",
-            "text" : "openid"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 0,
-                              "description" : "Delete a TFA entry by ID.",
-                              "method" : "DELETE",
-                              "name" : "delete_tfa",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "id" : {
-                                       "description" : "A TFA entry id.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "password" : {
-                                       "description" : "The current password.",
-                                       "maxLength" : 64,
-                                       "minLength" : 5,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "userid" : {
-                                       "description" : "User ID",
-                                       "format" : "pve-userid",
-                                       "maxLength" : 64,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "or",
-                                    [
-                                       "userid-param",
-                                       "self"
-                                    ],
-                                    [
-                                       "userid-group",
-                                       [
-                                          "User.Modify"
-                                       ]
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 0,
-                              "description" : "Fetch a requested TFA entry if present.",
-                              "method" : "GET",
-                              "name" : "get_tfa_entry",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "id" : {
-                                       "description" : "A TFA entry id.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "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" : {
-                                 "description" : "TFA Entry.",
-                                 "properties" : {
-                                    "created" : {
-                                       "description" : "Creation time of this entry as unix epoch.",
-                                       "type" : "integer"
-                                    },
-                                    "description" : {
-                                       "description" : "User chosen description for this entry.",
-                                       "type" : "string"
-                                    },
-                                    "enable" : {
-                                       "default" : 1,
-                                       "description" : "Whether this TFA entry is currently enabled.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "id" : {
-                                       "description" : "The id used to reference this entry.",
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "description" : "TFA Entry Type.",
-                                       "enum" : [
-                                          "totp",
-                                          "u2f",
-                                          "webauthn",
-                                          "recovery",
-                                          "yubico"
-                                       ],
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 0,
-                              "description" : "Add a TFA entry for a user.",
-                              "method" : "PUT",
-                              "name" : "update_tfa_entry",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "description" : {
-                                       "description" : "A description to distinguish multiple entries from one another",
-                                       "maxLength" : 255,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "enable" : {
-                                       "description" : "Whether the entry should be enabled for login.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "id" : {
-                                       "description" : "A TFA entry id.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "password" : {
-                                       "description" : "The current password.",
-                                       "maxLength" : 64,
-                                       "minLength" : 5,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "userid" : {
-                                       "description" : "User ID",
-                                       "format" : "pve-userid",
-                                       "maxLength" : 64,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "or",
-                                    [
-                                       "userid-param",
-                                       "self"
-                                    ],
-                                    [
-                                       "userid-group",
-                                       [
-                                          "User.Modify"
-                                       ]
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/access/tfa/{userid}/{id}",
-                        "text" : "{id}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 0,
-                        "description" : "List TFA configurations of users.",
-                        "method" : "GET",
-                        "name" : "list_user_tfa",
-                        "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" : {
-                           "description" : "A list of the user's TFA entries.",
-                           "items" : {
-                              "description" : "TFA Entry.",
-                              "properties" : {
-                                 "created" : {
-                                    "description" : "Creation time of this entry as unix epoch.",
-                                    "type" : "integer"
-                                 },
-                                 "description" : {
-                                    "description" : "User chosen description for this entry.",
-                                    "type" : "string"
-                                 },
-                                 "enable" : {
-                                    "default" : 1,
-                                    "description" : "Whether this TFA entry is currently enabled.",
-                                    "optional" : 1,
-                                    "type" : "boolean"
-                                 },
-                                 "id" : {
-                                    "description" : "The id used to reference this entry.",
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "description" : "TFA Entry Type.",
-                                    "enum" : [
-                                       "totp",
-                                       "u2f",
-                                       "webauthn",
-                                       "recovery",
-                                       "yubico"
-                                    ],
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 0,
-                        "description" : "Add a TFA entry for a user.",
-                        "method" : "POST",
-                        "name" : "add_tfa_entry",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "challenge" : {
-                                 "description" : "When responding to a u2f challenge: the original challenge string",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "description" : {
-                                 "description" : "A description to distinguish multiple entries from one another",
-                                 "maxLength" : 255,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "password" : {
-                                 "description" : "The current password.",
-                                 "maxLength" : 64,
-                                 "minLength" : 5,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "totp" : {
-                                 "description" : "A totp URI.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "TFA Entry Type.",
-                                 "enum" : [
-                                    "totp",
-                                    "u2f",
-                                    "webauthn",
-                                    "recovery",
-                                    "yubico"
-                                 ],
-                                 "type" : "string"
-                              },
-                              "userid" : {
-                                 "description" : "User ID",
-                                 "format" : "pve-userid",
-                                 "maxLength" : 64,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "value" : {
-                                 "description" : "The current value for the provided totp URI, or a Webauthn/U2F challenge response",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "or",
-                              [
-                                 "userid-param",
-                                 "self"
-                              ],
-                              [
-                                 "userid-group",
-                                 [
-                                    "User.Modify"
-                                 ]
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "properties" : {
-                              "challenge" : {
-                                 "description" : "When adding u2f entries, this contains a challenge the user must respond to in order to finish the registration.",
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "id" : {
-                                 "description" : "The id of a newly added TFA entry.",
-                                 "type" : "string"
-                              },
-                              "recovery" : {
-                                 "description" : "When adding recovery codes, this contains the list of codes to be displayed to the user",
-                                 "items" : {
-                                    "description" : "A recovery entry.",
-                                    "type" : "string"
-                                 },
-                                 "optional" : 1,
-                                 "type" : "array"
-                              }
-                           },
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/access/tfa/{userid}",
-                  "text" : "{userid}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 0,
-                  "description" : "List TFA configurations of users.",
-                  "method" : "GET",
-                  "name" : "list_tfa",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "description" : "Returns all or just the logged-in user, depending on privileges.",
-                     "user" : "all"
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "description" : "The list tuples of user and TFA entries.",
-                     "items" : {
-                        "properties" : {
-                           "entries" : {
-                              "items" : {
-                                 "description" : "TFA Entry.",
-                                 "properties" : {
-                                    "created" : {
-                                       "description" : "Creation time of this entry as unix epoch.",
-                                       "type" : "integer"
-                                    },
-                                    "description" : {
-                                       "description" : "User chosen description for this entry.",
-                                       "type" : "string"
-                                    },
-                                    "enable" : {
-                                       "default" : 1,
-                                       "description" : "Whether this TFA entry is currently enabled.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "id" : {
-                                       "description" : "The id used to reference this entry.",
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "description" : "TFA Entry Type.",
-                                       "enum" : [
-                                          "totp",
-                                          "u2f",
-                                          "webauthn",
-                                          "recovery",
-                                          "yubico"
-                                       ],
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              },
-                              "type" : "array"
-                           },
-                           "userid" : {
-                              "description" : "User this entry belongs to.",
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 0,
-                  "description" : "Finish a u2f challenge.",
-                  "method" : "POST",
-                  "name" : "verify_tfa",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "response" : {
-                           "description" : "The response to the current authentication challenge.",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "properties" : {
-                        "ticket" : {
-                           "type" : "string"
-                        }
-                     },
-                     "type" : "object"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/access/tfa",
-            "text" : "tfa"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Dummy. Useful for formatters which want to provide a login page.",
-                  "method" : "GET",
-                  "name" : "get_ticket",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "world"
-                  },
-                  "returns" : {
-                     "type" : "null"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 0,
-                  "description" : "Create or verify authentication ticket.",
-                  "method" : "POST",
-                  "name" : "create_ticket",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "new-format" : {
-                           "default" : 0,
-                           "description" : "With webauthn the format of half-authenticated tickts changed. New clients should pass 1 here and not worry about the old format. The old format is deprecated and will be retired with PVE-8.0",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "otp" : {
-                           "description" : "One-time password for Two-factor authentication.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "password" : {
-                           "description" : "The secret password. This can also be a valid ticket.",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "path" : {
-                           "description" : "Verify ticket, and check if user have access 'privs' on 'path'",
-                           "maxLength" : 64,
-                           "optional" : 1,
-                           "requires" : "privs",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "privs" : {
-                           "description" : "Verify ticket, and check if user have access 'privs' on 'path'",
-                           "format" : "pve-priv-list",
-                           "maxLength" : 64,
-                           "optional" : 1,
-                           "requires" : "path",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "realm" : {
-                           "description" : "You can optionally pass the realm using this parameter. Normally the realm is simply added to the username <username>@<relam>.",
-                           "format" : "pve-realm",
-                           "maxLength" : 32,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "tfa-challenge" : {
-                           "description" : "The signed TFA challenge string the user wants to respond to.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "username" : {
-                           "description" : "User name",
-                           "maxLength" : 64,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "description" : "You need to pass valid credientials.",
-                     "user" : "world"
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "properties" : {
-                        "CSRFPreventionToken" : {
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "clustername" : {
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "ticket" : {
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "username" : {
-                           "type" : "string"
-                        }
-                     },
-                     "type" : "object"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/access/ticket",
-            "text" : "ticket"
-         },
-         {
-            "info" : {
-               "PUT" : {
-                  "allowtoken" : 0,
-                  "description" : "Change user password.",
-                  "method" : "PUT",
-                  "name" : "change_password",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "password" : {
-                           "description" : "The new password.",
-                           "maxLength" : 64,
-                           "minLength" : 5,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "userid" : {
-                           "description" : "User ID",
-                           "format" : "pve-userid",
-                           "maxLength" : 64,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "or",
-                        [
-                           "userid-param",
-                           "self"
-                        ],
-                        [
-                           "and",
-                           [
-                              "userid-param",
-                              "Realm.AllocateUser"
-                           ],
-                           [
-                              "userid-group",
-                              [
-                                 "User.Modify"
-                              ]
-                           ]
-                        ]
-                     ],
-                     "description" : "Each user is allowed to change his own password. A user can change the password of another user if he has 'Realm.AllocateUser' (on the realm of user <userid>) and 'User.Modify' permission on /access/groups/<group> on a group where user <userid> is member of."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/access/password",
-            "text" : "password"
-         },
-         {
-            "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",
-            "parameters" : {
-               "additionalProperties" : 0
-            },
-            "permissions" : {
-               "user" : "all"
-            },
-            "returns" : {
-               "items" : {
-                  "properties" : {
-                     "subdir" : {
-                        "type" : "string"
-                     }
-                  },
-                  "type" : "object"
-               },
-               "links" : [
-                  {
-                     "href" : "{subdir}",
-                     "rel" : "child"
-                  }
-               ],
-               "type" : "array"
-            }
-         }
-      },
-      "leaf" : 0,
-      "path" : "/access",
-      "text" : "access"
-   },
-   {
-      "children" : [
-         {
-            "info" : {
-               "DELETE" : {
-                  "allowtoken" : 1,
-                  "description" : "Delete pool.",
-                  "method" : "DELETE",
-                  "name" : "delete_pool",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "poolid" : {
-                           "format" : "pve-poolid",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/pool/{poolid}",
-                        [
-                           "Pool.Allocate"
-                        ]
-                     ],
-                     "description" : "You can only delete empty pools (no members)."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               },
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Get pool configuration.",
-                  "method" : "GET",
-                  "name" : "read_pool",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "poolid" : {
-                           "format" : "pve-poolid",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "type" : {
-                           "enum" : [
-                              "qemu",
-                              "lxc",
-                              "storage"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/pool/{poolid}",
-                        [
-                           "Pool.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "members" : {
-                           "items" : {
-                              "additionalProperties" : 1,
-                              "properties" : {
-                                 "id" : {
-                                    "type" : "string"
-                                 },
-                                 "node" : {
-                                    "type" : "string"
-                                 },
-                                 "storage" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "enum" : [
-                                       "qemu",
-                                       "lxc",
-                                       "openvz",
-                                       "storage"
-                                    ],
-                                    "type" : "string"
-                                 },
-                                 "vmid" : {
-                                    "optional" : 1,
-                                    "type" : "integer"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     },
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 1,
-                  "description" : "Update pool data.",
-                  "method" : "PUT",
-                  "name" : "update_pool",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "delete" : {
-                           "description" : "Remove vms/storage (instead of adding it).",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "poolid" : {
-                           "format" : "pve-poolid",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "storage" : {
-                           "description" : "List of storage IDs.",
-                           "format" : "pve-storage-id-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "vms" : {
-                           "description" : "List of virtual machines.",
-                           "format" : "pve-vmid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/pool/{poolid}",
-                        [
-                           "Pool.Allocate"
-                        ]
-                     ],
-                     "description" : "You also need the right to modify permissions on any object you add/delete."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/pools/{poolid}",
-            "text" : "{poolid}"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "Pool index.",
-            "method" : "GET",
-            "name" : "index",
-            "parameters" : {
-               "additionalProperties" : 0
-            },
-            "permissions" : {
-               "description" : "List all pools where you have Pool.Audit permissions on /pool/<pool>.",
-               "user" : "all"
-            },
-            "returns" : {
-               "items" : {
-                  "properties" : {
-                     "poolid" : {
-                        "type" : "string"
-                     }
-                  },
-                  "type" : "object"
-               },
-               "links" : [
-                  {
-                     "href" : "{poolid}",
-                     "rel" : "child"
-                  }
-               ],
-               "type" : "array"
-            }
-         },
-         "POST" : {
-            "allowtoken" : 1,
-            "description" : "Create new pool.",
-            "method" : "POST",
-            "name" : "create_pool",
-            "parameters" : {
-               "additionalProperties" : 0,
-               "properties" : {
-                  "comment" : {
-                     "optional" : 1,
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  },
-                  "poolid" : {
-                     "format" : "pve-poolid",
-                     "type" : "string",
-                     "typetext" : "<string>"
-                  }
-               }
-            },
-            "permissions" : {
-               "check" : [
-                  "perm",
-                  "/pool/{poolid}",
-                  [
-                     "Pool.Allocate"
-                  ]
-               ]
-            },
-            "protected" : 1,
-            "returns" : {
-               "type" : "null"
-            }
-         }
-      },
-      "leaf" : 0,
-      "path" : "/pools",
-      "text" : "pools"
-   },
-   {
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "API version details, including some parts of the global datacenter config.",
-            "method" : "GET",
-            "name" : "version",
-            "parameters" : {
-               "additionalProperties" : 0
-            },
-            "permissions" : {
-               "user" : "all"
-            },
-            "returns" : {
-               "properties" : {
-                  "console" : {
-                     "description" : "The default console viewer to use.",
-                     "enum" : [
-                        "applet",
-                        "vv",
-                        "html5",
-                        "xtermjs"
-                     ],
-                     "optional" : 1,
-                     "type" : "string"
-                  },
-                  "release" : {
-                     "description" : "The current Proxmox VE point release in `x.y` format.",
-                     "type" : "string"
-                  },
-                  "repoid" : {
-                     "description" : "The short git revision from which this version was build.",
-                     "type" : "string"
-                  },
-                  "version" : {
-                     "description" : "The full pve-manager package version of this node.",
-                     "type" : "string"
-                  }
-               },
-               "type" : "object"
-            }
-         }
-      },
-      "leaf" : 1,
-      "path" : "/version",
-      "text" : "version"
-   }
-]
-;
-
diff --git a/api-viewer/apidata.json b/api-viewer/apidata.json
new file mode 100644
index 0000000..b117bc3
--- /dev/null
+++ b/api-viewer/apidata.json
@@ -0,0 +1,49786 @@
+[
+  {
+    "children" : [
+       {
+          "children" : [
+             {
+                "info" : {
+                   "DELETE" : {
+                      "allowtoken" : 1,
+                      "description" : "Mark replication job for removal.",
+                      "method" : "DELETE",
+                      "name" : "delete",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "force" : {
+                               "default" : 0,
+                               "description" : "Will remove the jobconfig entry, but will not cleanup.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "id" : {
+                               "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                               "format" : "pve-replication-job-id",
+                               "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                               "type" : "string"
+                            },
+                            "keep" : {
+                               "default" : 0,
+                               "description" : "Keep replicated data at target (do not remove).",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/storage",
+                            [
+                               "Datastore.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read replication job configuration.",
+                      "method" : "GET",
+                      "name" : "read",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "id" : {
+                               "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                               "format" : "pve-replication-job-id",
+                               "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update replication job configuration.",
+                      "method" : "PUT",
+                      "name" : "update",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "description" : "Description.",
+                               "maxLength" : 4096,
+                               "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/deactivate the entry.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "id" : {
+                               "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                               "format" : "pve-replication-job-id",
+                               "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                               "type" : "string"
+                            },
+                            "rate" : {
+                               "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "number",
+                               "typetext" : "<number> (1 - N)"
+                            },
+                            "remove_job" : {
+                               "description" : "Mark the replication job for removal. The job will remove all local replication snapshots. When set to 'full', it also tries to remove replicated volumes on the target. The job then removes itself from the configuration file.",
+                               "enum" : [
+                                  "local",
+                                  "full"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "schedule" : {
+                               "default" : "*/15",
+                               "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.",
+                               "format" : "pve-calendar-event",
+                               "maxLength" : 128,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "source" : {
+                               "description" : "For internal use, to detect if the guest was stolen.",
+                               "format" : "pve-node",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         },
+                         "type" : "object"
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/storage",
+                            [
+                               "Datastore.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/replication/{id}",
+                "text" : "{id}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "List replication jobs.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {},
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{id}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Create a new replication job",
+                "method" : "POST",
+                "name" : "create",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "comment" : {
+                         "description" : "Description.",
+                         "maxLength" : 4096,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "disable" : {
+                         "description" : "Flag to disable/deactivate the entry.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "id" : {
+                         "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                         "format" : "pve-replication-job-id",
+                         "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                         "type" : "string"
+                      },
+                      "rate" : {
+                         "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "number",
+                         "typetext" : "<number> (1 - N)"
+                      },
+                      "remove_job" : {
+                         "description" : "Mark the replication job for removal. The job will remove all local replication snapshots. When set to 'full', it also tries to remove replicated volumes on the target. The job then removes itself from the configuration file.",
+                         "enum" : [
+                            "local",
+                            "full"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "schedule" : {
+                         "default" : "*/15",
+                         "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.",
+                         "format" : "pve-calendar-event",
+                         "maxLength" : 128,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "source" : {
+                         "description" : "For internal use, to detect if the guest was stolen.",
+                         "format" : "pve-node",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "target" : {
+                         "description" : "Target node.",
+                         "format" : "pve-node",
+                         "optional" : 0,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "type" : {
+                         "description" : "Section type.",
+                         "enum" : [
+                            "local"
+                         ],
+                         "type" : "string"
+                      }
+                   },
+                   "type" : "object"
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/storage",
+                      [
+                         "Datastore.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/replication",
+          "text" : "replication"
+       },
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "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"
+                                  },
+                                  "verify-certificate" : {
+                                     "default" : 1,
+                                     "description" : "Set to 0 to disable certificate verification for https endpoints.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               },
+                               "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>"
+                                  },
+                                  "verify-certificate" : {
+                                     "default" : 1,
+                                     "description" : "Set to 0 to disable certificate verification for https endpoints.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               },
+                               "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",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "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" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "nodeid" : {
+                                     "description" : "Node id for this node.",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (1 - N)"
+                                  },
+                                  "votes" : {
+                                     "description" : "Number of votes for this node",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  }
+                               }
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "properties" : {
+                                  "corosync_authkey" : {
+                                     "type" : "string"
+                                  },
+                                  "corosync_conf" : {
+                                     "type" : "string"
+                                  },
+                                  "warnings" : {
+                                     "items" : {
+                                        "type" : "string"
+                                     },
+                                     "type" : "array"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/config/nodes/{node}",
+                      "text" : "{node}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Corosync node list.",
+                      "method" : "GET",
+                      "name" : "nodes",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "node" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{node}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/config/nodes",
+                "text" : "nodes"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get information needed to join this cluster over the connected node.",
+                      "method" : "GET",
+                      "name" : "join_info",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "default" : "current connected node",
+                               "description" : "The node for which the joinee gets the nodeinfo. ",
+                               "format" : "pve-node",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "config_digest" : {
+                               "type" : "string"
+                            },
+                            "nodelist" : {
+                               "items" : {
+                                  "additionalProperties" : 1,
+                                  "properties" : {
+                                     "name" : {
+                                        "description" : "The cluster node name.",
+                                        "format" : "pve-node",
+                                        "type" : "string"
+                                     },
+                                     "nodeid" : {
+                                        "description" : "Node id for this node.",
+                                        "minimum" : 1,
+                                        "optional" : 1,
+                                        "type" : "integer"
+                                     },
+                                     "pve_addr" : {
+                                        "format" : "ip",
+                                        "type" : "string"
+                                     },
+                                     "pve_fp" : {
+                                        "description" : "Certificate SHA 256 fingerprint.",
+                                        "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                        "type" : "string"
+                                     },
+                                     "quorum_votes" : {
+                                        "minimum" : 0,
+                                        "type" : "integer"
+                                     },
+                                     "ring0_addr" : {
+                                        "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"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            },
+                            "preferred_node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string"
+                            },
+                            "totem" : {
+                               "type" : "object"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "POST" : {
+                      "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" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "fingerprint" : {
+                               "description" : "Certificate SHA 256 fingerprint.",
+                               "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                               "type" : "string"
+                            },
+                            "force" : {
+                               "description" : "Do not throw error if node already exists.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "hostname" : {
+                               "description" : "Hostname (or IP) of an existing cluster member.",
+                               "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,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "password" : {
+                               "description" : "Superuser (root) password of peer node.",
+                               "maxLength" : 128,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "votes" : {
+                               "description" : "Number of votes for this node",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            }
+                         }
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/config/join",
+                "text" : "join"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get corosync totem protocol settings.",
+                      "method" : "GET",
+                      "name" : "totem",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   }
+                },
+                "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"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/config/qdevice",
+                "text" : "qdevice"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Directory index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Audit"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {},
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{name}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "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" : {
+                      "clustername" : {
+                         "description" : "The name of the cluster.",
+                         "format" : "pve-node",
+                         "maxLength" : 15,
+                         "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,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      },
+                      "votes" : {
+                         "description" : "Number of votes for this node.",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      }
+                   }
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "string"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/config",
+          "text" : "config"
+       },
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Delete rule.",
+                                  "method" : "DELETE",
+                                  "name" : "delete_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "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>"
+                                        },
+                                        "group" : {
+                                           "description" : "Security Group name.",
+                                           "maxLength" : 18,
+                                           "minLength" : 2,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : null,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               },
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get single rule data.",
+                                  "method" : "GET",
+                                  "name" : "get_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "group" : {
+                                           "description" : "Security Group name.",
+                                           "maxLength" : 18,
+                                           "minLength" : 2,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "proxyto" : null,
+                                  "returns" : {
+                                     "properties" : {
+                                        "action" : {
+                                           "type" : "string"
+                                        },
+                                        "comment" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "dest" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "dport" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "enable" : {
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "icmp-type" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "iface" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ipversion" : {
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "log" : {
+                                           "description" : "Log level for firewall rule",
+                                           "enum" : [
+                                              "emerg",
+                                              "alert",
+                                              "crit",
+                                              "err",
+                                              "warning",
+                                              "notice",
+                                              "info",
+                                              "debug",
+                                              "nolog"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "macro" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "pos" : {
+                                           "type" : "integer"
+                                        },
+                                        "proto" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "source" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "sport" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "type" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Modify rule data.",
+                                  "method" : "PUT",
+                                  "name" : "update_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "action" : {
+                                           "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                           "maxLength" : 20,
+                                           "minLength" : 2,
+                                           "optional" : 1,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        },
+                                        "comment" : {
+                                           "description" : "Descriptive comment.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "delete" : {
+                                           "description" : "A list of settings you want to delete.",
+                                           "format" : "pve-configid-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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>"
+                                        },
+                                        "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>"
+                                        },
+                                        "dport" : {
+                                           "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                           "format" : "pve-fw-dport-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "enable" : {
+                                           "description" : "Flag to enable/disable a rule.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "group" : {
+                                           "description" : "Security Group name.",
+                                           "maxLength" : 18,
+                                           "minLength" : 2,
+                                           "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",
+                                           "maxLength" : 20,
+                                           "minLength" : 2,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "log" : {
+                                           "description" : "Log level for firewall rule.",
+                                           "enum" : [
+                                              "emerg",
+                                              "alert",
+                                              "crit",
+                                              "err",
+                                              "warning",
+                                              "notice",
+                                              "info",
+                                              "debug",
+                                              "nolog"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "macro" : {
+                                           "description" : "Use predefined standard macro.",
+                                           "maxLength" : 128,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "moveto" : {
+                                           "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "proto" : {
+                                           "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                           "format" : "pve-fw-protocol-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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>"
+                                        },
+                                        "sport" : {
+                                           "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                           "format" : "pve-fw-sport-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "type" : {
+                                           "description" : "Rule type.",
+                                           "enum" : [
+                                              "in",
+                                              "out",
+                                              "group"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : null,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/cluster/firewall/groups/{group}/{pos}",
+                            "text" : "{pos}"
+                         }
+                      ],
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete security group.",
+                            "method" : "DELETE",
+                            "name" : "delete_security_group",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "group" : {
+                                     "description" : "Security Group name.",
+                                     "maxLength" : 18,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List rules.",
+                            "method" : "GET",
+                            "name" : "get_rules",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "group" : {
+                                     "description" : "Security Group name.",
+                                     "maxLength" : 18,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : null,
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "pos" : {
+                                        "type" : "integer"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{pos}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create new rule.",
+                            "method" : "POST",
+                            "name" : "create_rule",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "action" : {
+                                     "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 0,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  },
+                                  "comment" : {
+                                     "description" : "Descriptive comment.",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "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>"
+                                  },
+                                  "dport" : {
+                                     "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-dport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "enable" : {
+                                     "description" : "Flag to enable/disable a rule.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "group" : {
+                                     "description" : "Security Group name.",
+                                     "maxLength" : 18,
+                                     "minLength" : 2,
+                                     "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",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "log" : {
+                                     "description" : "Log level for firewall rule.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "macro" : {
+                                     "description" : "Use predefined standard macro.",
+                                     "maxLength" : 128,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "pos" : {
+                                     "description" : "Update rule at position <pos>.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "proto" : {
+                                     "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                     "format" : "pve-fw-protocol-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "sport" : {
+                                     "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-sport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "type" : {
+                                     "description" : "Rule type.",
+                                     "enum" : [
+                                        "in",
+                                        "out",
+                                        "group"
+                                     ],
+                                     "optional" : 0,
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : null,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/cluster/firewall/groups/{group}",
+                      "text" : "{group}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List security groups.",
+                      "method" : "GET",
+                      "name" : "list_security_groups",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "comment" : {
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "digest" : {
+                                  "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                  "maxLength" : 40,
+                                  "optional" : 0,
+                                  "type" : "string"
+                               },
+                               "group" : {
+                                  "description" : "Security Group name.",
+                                  "maxLength" : 18,
+                                  "minLength" : 2,
+                                  "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{group}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create new security group.",
+                      "method" : "POST",
+                      "name" : "create_security_group",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "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>"
+                            },
+                            "group" : {
+                               "description" : "Security Group name.",
+                               "maxLength" : 18,
+                               "minLength" : 2,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            },
+                            "rename" : {
+                               "description" : "Rename/update an existing security group. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing group.",
+                               "maxLength" : 18,
+                               "minLength" : 2,
+                               "optional" : 1,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/firewall/groups",
+                "text" : "groups"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete rule.",
+                            "method" : "DELETE",
+                            "name" : "delete_rule",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "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>"
+                                  },
+                                  "pos" : {
+                                     "description" : "Update rule at position <pos>.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : null,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get single rule data.",
+                            "method" : "GET",
+                            "name" : "get_rule",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "pos" : {
+                                     "description" : "Update rule at position <pos>.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : null,
+                            "returns" : {
+                               "properties" : {
+                                  "action" : {
+                                     "type" : "string"
+                                  },
+                                  "comment" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "dest" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "dport" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "enable" : {
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "icmp-type" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "iface" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "ipversion" : {
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "log" : {
+                                     "description" : "Log level for firewall rule",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "macro" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "pos" : {
+                                     "type" : "integer"
+                                  },
+                                  "proto" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "source" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "sport" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Modify rule data.",
+                            "method" : "PUT",
+                            "name" : "update_rule",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "action" : {
+                                     "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 1,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  },
+                                  "comment" : {
+                                     "description" : "Descriptive comment.",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "delete" : {
+                                     "description" : "A list of settings you want to delete.",
+                                     "format" : "pve-configid-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "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>"
+                                  },
+                                  "dport" : {
+                                     "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-dport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "enable" : {
+                                     "description" : "Flag to enable/disable a rule.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "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",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "log" : {
+                                     "description" : "Log level for firewall rule.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "macro" : {
+                                     "description" : "Use predefined standard macro.",
+                                     "maxLength" : 128,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "moveto" : {
+                                     "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "pos" : {
+                                     "description" : "Update rule at position <pos>.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "proto" : {
+                                     "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                     "format" : "pve-fw-protocol-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "sport" : {
+                                     "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-sport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "type" : {
+                                     "description" : "Rule type.",
+                                     "enum" : [
+                                        "in",
+                                        "out",
+                                        "group"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : null,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/firewall/rules/{pos}",
+                      "text" : "{pos}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List rules.",
+                      "method" : "GET",
+                      "name" : "get_rules",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "proxyto" : null,
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "pos" : {
+                                  "type" : "integer"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{pos}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create new rule.",
+                      "method" : "POST",
+                      "name" : "create_rule",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "action" : {
+                               "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                               "maxLength" : 20,
+                               "minLength" : 2,
+                               "optional" : 0,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            },
+                            "comment" : {
+                               "description" : "Descriptive comment.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "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>"
+                            },
+                            "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>"
+                            },
+                            "dport" : {
+                               "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                               "format" : "pve-fw-dport-spec",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "enable" : {
+                               "description" : "Flag to enable/disable a rule.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "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",
+                               "maxLength" : 20,
+                               "minLength" : 2,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "log" : {
+                               "description" : "Log level for firewall rule.",
+                               "enum" : [
+                                  "emerg",
+                                  "alert",
+                                  "crit",
+                                  "err",
+                                  "warning",
+                                  "notice",
+                                  "info",
+                                  "debug",
+                                  "nolog"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "macro" : {
+                               "description" : "Use predefined standard macro.",
+                               "maxLength" : 128,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "pos" : {
+                               "description" : "Update rule at position <pos>.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "proto" : {
+                               "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                               "format" : "pve-fw-protocol-spec",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "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>"
+                            },
+                            "sport" : {
+                               "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                               "format" : "pve-fw-sport-spec",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "type" : {
+                               "description" : "Rule type.",
+                               "enum" : [
+                                  "in",
+                                  "out",
+                                  "group"
+                               ],
+                               "optional" : 0,
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : null,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/firewall/rules",
+                "text" : "rules"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Remove IP or Network from IPSet.",
+                                  "method" : "DELETE",
+                                  "name" : "remove_ip",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cidr" : {
+                                           "description" : "Network/IP specification in CIDR format.",
+                                           "format" : "IPorCIDRorAlias",
+                                           "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>"
+                                        },
+                                        "name" : {
+                                           "description" : "IP set name.",
+                                           "maxLength" : 64,
+                                           "minLength" : 2,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               },
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read IP or Network settings from IPSet.",
+                                  "method" : "GET",
+                                  "name" : "read_ip",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cidr" : {
+                                           "description" : "Network/IP specification in CIDR format.",
+                                           "format" : "IPorCIDRorAlias",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "name" : {
+                                           "description" : "IP set name.",
+                                           "maxLength" : 64,
+                                           "minLength" : 2,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "object"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Update IP or Network settings",
+                                  "method" : "PUT",
+                                  "name" : "update_ip",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cidr" : {
+                                           "description" : "Network/IP specification in CIDR format.",
+                                           "format" : "IPorCIDRorAlias",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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>"
+                                        },
+                                        "name" : {
+                                           "description" : "IP set name.",
+                                           "maxLength" : 64,
+                                           "minLength" : 2,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        },
+                                        "nomatch" : {
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/cluster/firewall/ipset/{name}/{cidr}",
+                            "text" : "{cidr}"
+                         }
+                      ],
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete IPSet",
+                            "method" : "DELETE",
+                            "name" : "delete_ipset",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "force" : {
+                                     "description" : "Delete all members of the IPSet, if there are any.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "name" : {
+                                     "description" : "IP set name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List IPSet content",
+                            "method" : "GET",
+                            "name" : "get_ipset",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "name" : {
+                                     "description" : "IP set name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "cidr" : {
+                                        "type" : "string"
+                                     },
+                                     "comment" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "digest" : {
+                                        "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                        "maxLength" : 40,
+                                        "optional" : 0,
+                                        "type" : "string"
+                                     },
+                                     "nomatch" : {
+                                        "optional" : 1,
+                                        "type" : "boolean"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{cidr}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Add IP or Network to IPSet.",
+                            "method" : "POST",
+                            "name" : "create_ip",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "cidr" : {
+                                     "description" : "Network/IP specification in CIDR format.",
+                                     "format" : "IPorCIDRorAlias",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "comment" : {
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "name" : {
+                                     "description" : "IP set name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  },
+                                  "nomatch" : {
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/cluster/firewall/ipset/{name}",
+                      "text" : "{name}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List IPSets",
+                      "method" : "GET",
+                      "name" : "ipset_index",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "comment" : {
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "digest" : {
+                                  "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                  "maxLength" : 40,
+                                  "optional" : 0,
+                                  "type" : "string"
+                               },
+                               "name" : {
+                                  "description" : "IP set name.",
+                                  "maxLength" : 64,
+                                  "minLength" : 2,
+                                  "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create new IPSet",
+                      "method" : "POST",
+                      "name" : "create_ipset",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "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>"
+                            },
+                            "name" : {
+                               "description" : "IP set name.",
+                               "maxLength" : 64,
+                               "minLength" : 2,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            },
+                            "rename" : {
+                               "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                               "maxLength" : 64,
+                               "minLength" : 2,
+                               "optional" : 1,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/firewall/ipset",
+                "text" : "ipset"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Remove IP or Network alias.",
+                            "method" : "DELETE",
+                            "name" : "remove_alias",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "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>"
+                                  },
+                                  "name" : {
+                                     "description" : "Alias name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Read alias.",
+                            "method" : "GET",
+                            "name" : "read_alias",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "name" : {
+                                     "description" : "Alias name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Update IP or Network alias.",
+                            "method" : "PUT",
+                            "name" : "update_alias",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "cidr" : {
+                                     "description" : "Network/IP specification in CIDR format.",
+                                     "format" : "IPorCIDR",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "name" : {
+                                     "description" : "Alias name.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  },
+                                  "rename" : {
+                                     "description" : "Rename an existing alias.",
+                                     "maxLength" : 64,
+                                     "minLength" : 2,
+                                     "optional" : 1,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/firewall/aliases/{name}",
+                      "text" : "{name}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List aliases",
+                      "method" : "GET",
+                      "name" : "get_aliases",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "cidr" : {
+                                  "type" : "string"
+                               },
+                               "comment" : {
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "digest" : {
+                                  "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                  "maxLength" : 40,
+                                  "optional" : 0,
+                                  "type" : "string"
+                               },
+                               "name" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create IP or Network Alias.",
+                      "method" : "POST",
+                      "name" : "create_alias",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cidr" : {
+                               "description" : "Network/IP specification in CIDR format.",
+                               "format" : "IPorCIDR",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "comment" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "name" : {
+                               "description" : "Alias name.",
+                               "maxLength" : 64,
+                               "minLength" : 2,
+                               "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/firewall/aliases",
+                "text" : "aliases"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get Firewall options.",
+                      "method" : "GET",
+                      "name" : "get_options",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "properties" : {
+                            "ebtables" : {
+                               "default" : 1,
+                               "description" : "Enable ebtables rules cluster wide.",
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "enable" : {
+                               "description" : "Enable or disable the firewall cluster wide.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer"
+                            },
+                            "log_ratelimit" : {
+                               "description" : "Log ratelimiting settings",
+                               "format" : {
+                                  "burst" : {
+                                     "default" : 5,
+                                     "description" : "Initial burst of packages which will always get logged before the rate is applied",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "enable" : {
+                                     "default" : "1",
+                                     "default_key" : 1,
+                                     "description" : "Enable or disable log rate limiting",
+                                     "type" : "boolean"
+                                  },
+                                  "rate" : {
+                                     "default" : "1/second",
+                                     "description" : "Frequency with which the burst bucket gets refilled",
+                                     "format_description" : "rate",
+                                     "optional" : 1,
+                                     "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "policy_in" : {
+                               "description" : "Input policy.",
+                               "enum" : [
+                                  "ACCEPT",
+                                  "REJECT",
+                                  "DROP"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "policy_out" : {
+                               "description" : "Output policy.",
+                               "enum" : [
+                                  "ACCEPT",
+                                  "REJECT",
+                                  "DROP"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Set Firewall options.",
+                      "method" : "PUT",
+                      "name" : "set_options",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "delete" : {
+                               "description" : "A list of settings you want to delete.",
+                               "format" : "pve-configid-list",
+                               "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>"
+                            },
+                            "ebtables" : {
+                               "default" : 1,
+                               "description" : "Enable ebtables rules cluster wide.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "enable" : {
+                               "description" : "Enable or disable the firewall cluster wide.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "log_ratelimit" : {
+                               "description" : "Log ratelimiting settings",
+                               "format" : {
+                                  "burst" : {
+                                     "default" : 5,
+                                     "description" : "Initial burst of packages which will always get logged before the rate is applied",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "enable" : {
+                                     "default" : "1",
+                                     "default_key" : 1,
+                                     "description" : "Enable or disable log rate limiting",
+                                     "type" : "boolean"
+                                  },
+                                  "rate" : {
+                                     "default" : "1/second",
+                                     "description" : "Frequency with which the burst bucket gets refilled",
+                                     "format_description" : "rate",
+                                     "optional" : 1,
+                                     "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[enable=]<1|0> [,burst=<integer>] [,rate=<rate>]"
+                            },
+                            "policy_in" : {
+                               "description" : "Input policy.",
+                               "enum" : [
+                                  "ACCEPT",
+                                  "REJECT",
+                                  "DROP"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "policy_out" : {
+                               "description" : "Output policy.",
+                               "enum" : [
+                                  "ACCEPT",
+                                  "REJECT",
+                                  "DROP"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/firewall/options",
+                "text" : "options"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List available macros",
+                      "method" : "GET",
+                      "name" : "get_macros",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "descr" : {
+                                  "description" : "More verbose description (if available).",
+                                  "type" : "string"
+                               },
+                               "macro" : {
+                                  "description" : "Macro name.",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/firewall/macros",
+                "text" : "macros"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
+                      "method" : "GET",
+                      "name" : "refs",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "type" : {
+                               "description" : "Only list references of specified type.",
+                               "enum" : [
+                                  "alias",
+                                  "ipset"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "comment" : {
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "name" : {
+                                  "type" : "string"
+                               },
+                               "ref" : {
+                                  "type" : "string"
+                               },
+                               "type" : {
+                                  "enum" : [
+                                     "alias",
+                                     "ipset"
+                                  ],
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/firewall/refs",
+                "text" : "refs"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Directory 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/firewall",
+          "text" : "firewall"
+       },
+       {
+          "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "id" : {
+                               "description" : "The job ID.",
+                               "maxLength" : 50,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read vzdump backup job definition.",
+                      "method" : "GET",
+                      "name" : "read_job",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "id" : {
+                               "description" : "The job ID.",
+                               "maxLength" : 50,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update vzdump backup job definition.",
+                      "method" : "PUT",
+                      "name" : "update_job",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "all" : {
+                               "default" : 0,
+                               "description" : "Backup all known guest systems on this host.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "bwlimit" : {
+                               "default" : 0,
+                               "description" : "Limit I/O bandwidth (KBytes per second).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "comment" : {
+                               "description" : "Description for the Job.",
+                               "maxLength" : 512,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "compress" : {
+                               "default" : "0",
+                               "description" : "Compress dump file.",
+                               "enum" : [
+                                  "0",
+                                  "1",
+                                  "gzip",
+                                  "lzo",
+                                  "zstd"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "delete" : {
+                               "description" : "A list of settings you want to delete.",
+                               "format" : "pve-configid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "dow" : {
+                               "description" : "Day of week selection.",
+                               "format" : "pve-day-of-week-list",
+                               "optional" : 1,
+                               "requires" : "starttime",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "dumpdir" : {
+                               "description" : "Store resulting files to specified directory.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "enabled" : {
+                               "default" : "1",
+                               "description" : "Enable or disable the job.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "exclude" : {
+                               "description" : "Exclude specified guest systems (assumes --all)",
+                               "format" : "pve-vmid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<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",
+                               "typetext" : "<string>"
+                            },
+                            "id" : {
+                               "description" : "The job ID.",
+                               "maxLength" : 50,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ionice" : {
+                               "default" : 7,
+                               "description" : "Set CFQ ionice priority.",
+                               "maximum" : 8,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 8)"
+                            },
+                            "lockwait" : {
+                               "default" : 180,
+                               "description" : "Maximal time to wait for the global lock (minutes).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "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",
+                               "typetext" : "<string>"
+                            },
+                            "maxfiles" : {
+                               "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "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",
+                               "typetext" : "<string>"
+                            },
+                            "notes-template" : {
+                               "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                               "maxLength" : 1024,
+                               "optional" : 1,
+                               "requires" : "storage",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "performance" : {
+                               "description" : "Other performance-related settings.",
+                               "format" : "backup-performance",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[max-workers=<integer>]"
+                            },
+                            "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",
+                               "typetext" : "<integer>"
+                            },
+                            "pool" : {
+                               "description" : "Backup all known guest systems included in the specified pool.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "protected" : {
+                               "description" : "If true, mark backup(s) as protected.",
+                               "optional" : 1,
+                               "requires" : "storage",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "remove" : {
+                               "default" : 1,
+                               "description" : "Prune older backups according to 'prune-backups'.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "repeat-missed" : {
+                               "default" : 0,
+                               "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "schedule" : {
+                               "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                               "format" : "pve-calendar-event",
+                               "maxLength" : 128,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "script" : {
+                               "description" : "Use specified hook script.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "starttime" : {
+                               "description" : "Job Start time.",
+                               "optional" : 1,
+                               "pattern" : "\\d{1,2}:\\d{1,2}",
+                               "type" : "string",
+                               "typetext" : "HH:MM"
+                            },
+                            "stdexcludes" : {
+                               "default" : 1,
+                               "description" : "Exclude temporary files and logs.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "stop" : {
+                               "default" : 0,
+                               "description" : "Stop running backup jobs on this host.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "stopwait" : {
+                               "default" : 10,
+                               "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "storage" : {
+                               "description" : "Store resulting file to this storage.",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "tmpdir" : {
+                               "description" : "Store temporary files to specified directory.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vmid" : {
+                               "description" : "The ID of the guest system you want to backup.",
+                               "format" : "pve-vmid-list",
+                               "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" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ],
+                         "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root at pam' user."
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/backup/{id}",
+                "text" : "{id}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "List vzdump backup schedule.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Audit"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "id" : {
+                            "description" : "The job ID.",
+                            "maxLength" : 50,
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{id}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Create new vzdump backup job.",
+                "method" : "POST",
+                "name" : "create_job",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "all" : {
+                         "default" : 0,
+                         "description" : "Backup all known guest systems on this host.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "bwlimit" : {
+                         "default" : 0,
+                         "description" : "Limit I/O bandwidth (KBytes per second).",
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - N)"
+                      },
+                      "comment" : {
+                         "description" : "Description for the Job.",
+                         "maxLength" : 512,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "compress" : {
+                         "default" : "0",
+                         "description" : "Compress dump file.",
+                         "enum" : [
+                            "0",
+                            "1",
+                            "gzip",
+                            "lzo",
+                            "zstd"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "dow" : {
+                         "default" : "mon,tue,wed,thu,fri,sat,sun",
+                         "description" : "Day of week selection.",
+                         "format" : "pve-day-of-week-list",
+                         "optional" : 1,
+                         "requires" : "starttime",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "dumpdir" : {
+                         "description" : "Store resulting files to specified directory.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "enabled" : {
+                         "default" : "1",
+                         "description" : "Enable or disable the job.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "exclude" : {
+                         "description" : "Exclude specified guest systems (assumes --all)",
+                         "format" : "pve-vmid-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<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",
+                         "typetext" : "<string>"
+                      },
+                      "id" : {
+                         "description" : "Job ID (will be autogenerated).",
+                         "format" : "pve-configid",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "ionice" : {
+                         "default" : 7,
+                         "description" : "Set CFQ ionice priority.",
+                         "maximum" : 8,
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - 8)"
+                      },
+                      "lockwait" : {
+                         "default" : 180,
+                         "description" : "Maximal time to wait for the global lock (minutes).",
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - N)"
+                      },
+                      "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",
+                         "typetext" : "<string>"
+                      },
+                      "maxfiles" : {
+                         "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      },
+                      "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",
+                         "typetext" : "<string>"
+                      },
+                      "notes-template" : {
+                         "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                         "maxLength" : 1024,
+                         "optional" : 1,
+                         "requires" : "storage",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "performance" : {
+                         "description" : "Other performance-related settings.",
+                         "format" : "backup-performance",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[max-workers=<integer>]"
+                      },
+                      "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",
+                         "typetext" : "<integer>"
+                      },
+                      "pool" : {
+                         "description" : "Backup all known guest systems included in the specified pool.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "protected" : {
+                         "description" : "If true, mark backup(s) as protected.",
+                         "optional" : 1,
+                         "requires" : "storage",
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "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.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "remove" : {
+                         "default" : 1,
+                         "description" : "Prune older backups according to 'prune-backups'.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "repeat-missed" : {
+                         "default" : 0,
+                         "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "schedule" : {
+                         "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                         "format" : "pve-calendar-event",
+                         "maxLength" : 128,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "script" : {
+                         "description" : "Use specified hook script.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "starttime" : {
+                         "description" : "Job Start time.",
+                         "optional" : 1,
+                         "pattern" : "\\d{1,2}:\\d{1,2}",
+                         "type" : "string",
+                         "typetext" : "HH:MM"
+                      },
+                      "stdexcludes" : {
+                         "default" : 1,
+                         "description" : "Exclude temporary files and logs.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "stop" : {
+                         "default" : 0,
+                         "description" : "Stop running backup jobs on this host.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "stopwait" : {
+                         "default" : 10,
+                         "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - N)"
+                      },
+                      "storage" : {
+                         "description" : "Store resulting file to this storage.",
+                         "format" : "pve-storage-id",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "tmpdir" : {
+                         "description" : "Store temporary files to specified directory.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "vmid" : {
+                         "description" : "The ID of the guest system you want to backup.",
+                         "format" : "pve-vmid-list",
+                         "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" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Modify"
+                      ]
+                   ],
+                   "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root at pam' user."
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "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/backup-info/not-backed-up",
+                "text" : "not-backed-up"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Index for backup info related endpoints",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "returns" : {
+                   "description" : "Directory index.",
+                   "items" : {
+                      "properties" : {
+                         "subdir" : {
+                            "description" : "API sub-directory endpoint",
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{subdir}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/backup-info",
+          "text" : "backup-info"
+       },
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Request resource migration (online) to another node.",
+                                  "method" : "POST",
+                                  "name" : "migrate",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "Target node.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "sid" : {
+                                           "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                           "format" : "pve-ha-resource-or-vm-id",
+                                           "type" : "string",
+                                           "typetext" : "<type>:<name>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/cluster/ha/resources/{sid}/migrate",
+                            "text" : "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",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "Target node.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "sid" : {
+                                           "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                           "format" : "pve-ha-resource-or-vm-id",
+                                           "type" : "string",
+                                           "typetext" : "<type>:<name>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/cluster/ha/resources/{sid}/relocate",
+                            "text" : "relocate"
+                         }
+                      ],
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete resource configuration.",
+                            "method" : "DELETE",
+                            "name" : "delete",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "sid" : {
+                                     "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                     "format" : "pve-ha-resource-or-vm-id",
+                                     "type" : "string",
+                                     "typetext" : "<type>:<name>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Console"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Read resource configuration.",
+                            "method" : "GET",
+                            "name" : "read",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "sid" : {
+                                     "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                     "format" : "pve-ha-resource-or-vm-id",
+                                     "type" : "string",
+                                     "typetext" : "<type>:<name>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "properties" : {
+                                  "comment" : {
+                                     "description" : "Description.",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "digest" : {
+                                     "description" : "Can be used to prevent concurrent modifications.",
+                                     "type" : "string"
+                                  },
+                                  "group" : {
+                                     "description" : "The HA group identifier.",
+                                     "format" : "pve-configid",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "max_relocate" : {
+                                     "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "max_restart" : {
+                                     "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "sid" : {
+                                     "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                     "format" : "pve-ha-resource-or-vm-id",
+                                     "type" : "string",
+                                     "typetext" : "<type>:<name>"
+                                  },
+                                  "state" : {
+                                     "description" : "Requested resource state.",
+                                     "enum" : [
+                                        "started",
+                                        "stopped",
+                                        "enabled",
+                                        "disabled",
+                                        "ignored"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "description" : "The type of the resources.",
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Update resource configuration.",
+                            "method" : "PUT",
+                            "name" : "update",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "comment" : {
+                                     "description" : "Description.",
+                                     "maxLength" : 4096,
+                                     "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>"
+                                  },
+                                  "group" : {
+                                     "description" : "The HA group identifier.",
+                                     "format" : "pve-configid",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "max_relocate" : {
+                                     "default" : 1,
+                                     "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "max_restart" : {
+                                     "default" : 1,
+                                     "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "sid" : {
+                                     "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                     "format" : "pve-ha-resource-or-vm-id",
+                                     "type" : "string",
+                                     "typetext" : "<type>:<name>"
+                                  },
+                                  "state" : {
+                                     "default" : "started",
+                                     "description" : "Requested resource state.",
+                                     "enum" : [
+                                        "started",
+                                        "stopped",
+                                        "enabled",
+                                        "disabled",
+                                        "ignored"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                                  }
+                               },
+                               "type" : "object"
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Console"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/cluster/ha/resources/{sid}",
+                      "text" : "{sid}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List HA resources.",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "type" : {
+                               "description" : "Only list resources of specific type",
+                               "enum" : [
+                                  "ct",
+                                  "vm"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "sid" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{sid}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create a new HA resource.",
+                      "method" : "POST",
+                      "name" : "create",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "description" : "Description.",
+                               "maxLength" : 4096,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "group" : {
+                               "description" : "The HA group identifier.",
+                               "format" : "pve-configid",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "max_relocate" : {
+                               "default" : 1,
+                               "description" : "Maximal number of service relocate tries when a service failes to start.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "max_restart" : {
+                               "default" : 1,
+                               "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "sid" : {
+                               "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                               "format" : "pve-ha-resource-or-vm-id",
+                               "type" : "string",
+                               "typetext" : "<type>:<name>"
+                            },
+                            "state" : {
+                               "default" : "started",
+                               "description" : "Requested resource state.",
+                               "enum" : [
+                                  "started",
+                                  "stopped",
+                                  "enabled",
+                                  "disabled",
+                                  "ignored"
+                               ],
+                               "optional" : 1,
+                               "type" : "string",
+                               "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                            },
+                            "type" : {
+                               "description" : "Resource type.",
+                               "enum" : [
+                                  "ct",
+                                  "vm"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Console"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/ha/resources",
+                "text" : "resources"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete ha group configuration.",
+                            "method" : "DELETE",
+                            "name" : "delete",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "group" : {
+                                     "description" : "The HA group identifier.",
+                                     "format" : "pve-configid",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Console"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Read ha group configuration.",
+                            "method" : "GET",
+                            "name" : "read",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "group" : {
+                                     "description" : "The HA group identifier.",
+                                     "format" : "pve-configid",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {}
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Update ha group configuration.",
+                            "method" : "PUT",
+                            "name" : "update",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "comment" : {
+                                     "description" : "Description.",
+                                     "maxLength" : 4096,
+                                     "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>"
+                                  },
+                                  "group" : {
+                                     "description" : "The HA group identifier.",
+                                     "format" : "pve-configid",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "nodes" : {
+                                     "description" : "List of cluster node names with optional priority.",
+                                     "format" : "pve-ha-group-node-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
+                                     "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
+                                  },
+                                  "nofailback" : {
+                                     "default" : 0,
+                                     "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "restricted" : {
+                                     "default" : 0,
+                                     "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>",
+                                     "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
+                                  }
+                               },
+                               "type" : "object"
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Console"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/ha/groups/{group}",
+                      "text" : "{group}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get HA groups.",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "group" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{group}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create a new HA group.",
+                      "method" : "POST",
+                      "name" : "create",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "description" : "Description.",
+                               "maxLength" : 4096,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "group" : {
+                               "description" : "The HA group identifier.",
+                               "format" : "pve-configid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "nodes" : {
+                               "description" : "List of cluster node names with optional priority.",
+                               "format" : "pve-ha-group-node-list",
+                               "optional" : 0,
+                               "type" : "string",
+                               "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
+                               "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
+                            },
+                            "nofailback" : {
+                               "default" : 0,
+                               "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "restricted" : {
+                               "default" : 0,
+                               "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>",
+                               "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
+                            },
+                            "type" : {
+                               "description" : "Group type.",
+                               "enum" : [
+                                  "group"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Console"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/ha/groups",
+                "text" : "groups"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get HA manger status.",
+                            "method" : "GET",
+                            "name" : "status",
+                            "parameters" : {
+                               "additionalProperties" : 0
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/ha/status/current",
+                      "text" : "current"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get full HA manger status, including LRM status.",
+                            "method" : "GET",
+                            "name" : "manager_status",
+                            "parameters" : {
+                               "additionalProperties" : 0
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "type" : "object"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/ha/status/manager_status",
+                      "text" : "manager_status"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Directory 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/ha/status",
+                "text" : "status"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Directory index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Audit"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "id" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{id}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/ha",
+          "text" : "ha"
+       },
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "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",
+                                        "azion",
+                                        "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",
+                                        "oci",
+                                        "one",
+                                        "online",
+                                        "openprovider",
+                                        "openstack",
+                                        "opnsense",
+                                        "ovh",
+                                        "pdns",
+                                        "pleskxml",
+                                        "pointhq",
+                                        "porkbun",
+                                        "rackcorp",
+                                        "rackspace",
+                                        "rcode0",
+                                        "regru",
+                                        "scaleway",
+                                        "schlundtech",
+                                        "selectel",
+                                        "servercow",
+                                        "simply",
+                                        "tele3",
+                                        "transip",
+                                        "ultra",
+                                        "unoeuro",
+                                        "variomedia",
+                                        "veesp",
+                                        "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",
+                                  "azion",
+                                  "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",
+                                  "oci",
+                                  "one",
+                                  "online",
+                                  "openprovider",
+                                  "openstack",
+                                  "opnsense",
+                                  "ovh",
+                                  "pdns",
+                                  "pleskxml",
+                                  "pointhq",
+                                  "porkbun",
+                                  "rackcorp",
+                                  "rackspace",
+                                  "rcode0",
+                                  "regru",
+                                  "scaleway",
+                                  "schlundtech",
+                                  "selectel",
+                                  "servercow",
+                                  "simply",
+                                  "tele3",
+                                  "transip",
+                                  "ultra",
+                                  "unoeuro",
+                                  "variomedia",
+                                  "veesp",
+                                  "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",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "name" : {
+                                     "default" : "default",
+                                     "description" : "ACME account config file name.",
+                                     "format" : "pve-configid",
+                                     "format_description" : "name",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<name>"
+                                  }
+                               }
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Return existing ACME account information.",
+                            "method" : "GET",
+                            "name" : "get_account",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "name" : {
+                                     "default" : "default",
+                                     "description" : "ACME account config file name.",
+                                     "format" : "pve-configid",
+                                     "format_description" : "name",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<name>"
+                                  }
+                               }
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "account" : {
+                                     "optional" : 1,
+                                     "renderer" : "yaml",
+                                     "type" : "object"
+                                  },
+                                  "directory" : {
+                                     "description" : "URL of ACME CA directory endpoint.",
+                                     "optional" : 1,
+                                     "pattern" : "^https?://.*",
+                                     "type" : "string"
+                                  },
+                                  "location" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "tos" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "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",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "contact" : {
+                                     "description" : "Contact email addresses.",
+                                     "format" : "email-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "name" : {
+                                     "default" : "default",
+                                     "description" : "ACME account config file name.",
+                                     "format" : "pve-configid",
+                                     "format_description" : "name",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<name>"
+                                  }
+                               }
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/cluster/acme/account/{name}",
+                      "text" : "{name}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "ACMEAccount index.",
+                      "method" : "GET",
+                      "name" : "account_index",
+                      "parameters" : {
+                         "additionalProperties" : 0
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Register a new ACME account with CA.",
+                      "method" : "POST",
+                      "name" : "register_account",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "contact" : {
+                               "description" : "Contact email addresses.",
+                               "format" : "email-list",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "directory" : {
+                               "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                               "description" : "URL of ACME CA directory endpoint.",
+                               "optional" : 1,
+                               "pattern" : "^https?://.*",
+                               "type" : "string"
+                            },
+                            "name" : {
+                               "default" : "default",
+                               "description" : "ACME account config file name.",
+                               "format" : "pve-configid",
+                               "format_description" : "name",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<name>"
+                            },
+                            "tos_url" : {
+                               "description" : "URL of CA TermsOfService - setting this indicates agreement.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/cluster/acme/account",
+                "text" : "account"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Retrieve ACME TermsOfService URL from CA.",
+                      "method" : "GET",
+                      "name" : "get_tos",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "directory" : {
+                               "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                               "description" : "URL of ACME CA directory endpoint.",
+                               "optional" : 1,
+                               "pattern" : "^https?://.*",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "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" : 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" : [
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Returns a list of future schedule runtimes.",
+                      "method" : "GET",
+                      "name" : "schedule-analyze",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "iterations" : {
+                               "default" : 10,
+                               "description" : "Number of event-iteration to simulate and return.",
+                               "maximum" : 100,
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - 100)"
+                            },
+                            "schedule" : {
+                               "description" : "Job schedule. The format is a subset of `systemd` calendar events.",
+                               "format" : "pve-calendar-event",
+                               "maxLength" : 128,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "starttime" : {
+                               "description" : "UNIX timestamp to start the calculation from. Defaults to the current time.",
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "description" : "An array of the next <iterations> events since <starttime>.",
+                         "items" : {
+                            "properties" : {
+                               "timestamp" : {
+                                  "description" : "UNIX timestamp for the run.",
+                                  "type" : "integer"
+                               },
+                               "utc" : {
+                                  "description" : "UTC timestamp for the run.",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/cluster/jobs/schedule-analyze",
+                "text" : "schedule-analyze"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Index for jobs related endpoints.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "description" : "Directory index.",
+                   "items" : {
+                      "properties" : {
+                         "subdir" : {
+                            "description" : "API sub-directory endpoint",
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{subdir}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/jobs",
+          "text" : "jobs"
+       },
+       {
+          "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",
+                                     "maxLength" : 256,
+                                     "optional" : 1,
+                                     "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
+                                     "type" : "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",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
+                               "type" : "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" : {
+                                  "advertise-subnets" : {
+                                     "description" : "Advertise evpn subnets if you have silent hosts",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "bridge" : {
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "bridge-disable-mac-learning" : {
+                                     "description" : "Disable auto mac learning.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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>"
+                                  },
+                                  "disable-arp-nd-suppression" : {
+                                     "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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>"
+                                  },
+                                  "exitnodes-local-routing" : {
+                                     "description" : "Allow exitnodes to connect to evpn guests",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "exitnodes-primary" : {
+                                     "description" : "Force traffic to this exitnode first.",
+                                     "format" : "pve-node",
+                                     "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>"
+                                  },
+                                  "rt-import" : {
+                                     "description" : "Route-Target import",
+                                     "format" : "pve-sdn-bgp-rt-list",
+                                     "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" : {
+                            "advertise-subnets" : {
+                               "description" : "Advertise evpn subnets if you have silent hosts",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "bridge" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "bridge-disable-mac-learning" : {
+                               "description" : "Disable auto mac learning.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "controller" : {
+                               "description" : "Frr router name",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "disable-arp-nd-suppression" : {
+                               "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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>"
+                            },
+                            "exitnodes-local-routing" : {
+                               "description" : "Allow exitnodes to connect to evpn guests",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "exitnodes-primary" : {
+                               "description" : "Force traffic to this exitnode first.",
+                               "format" : "pve-node",
+                               "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>"
+                            },
+                            "rt-import" : {
+                               "description" : "Route-Target import",
+                               "format" : "pve-sdn-bgp-rt-list",
+                               "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",
+                                     "maximum" : 4294967296,
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - 4294967296)"
+                                  },
+                                  "bgp-multipath-as-path-relax" : {
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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",
+                               "maximum" : 4294967296,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 4294967296)"
+                            },
+                            "bgp-multipath-as-path-relax" : {
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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" : {
+                      "allowtoken" : 1,
+                      "description" : "SDN dns index.",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "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" : {
+                            "properties" : {
+                               "dns" : {
+                                  "type" : "string"
+                               },
+                               "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" : 0,
+                "path" : "/cluster/sdn/dns",
+                "text" : "dns"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Directory index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "SDN.Audit"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "id" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{id}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "PUT" : {
+                "allowtoken" : 1,
+                "description" : "Apply sdn controller changes && reload.",
+                "method" : "PUT",
+                "name" : "reload",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/sdn",
+                      [
+                         "SDN.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "string"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/cluster/sdn",
+          "text" : "sdn"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Read cluster log",
+                "method" : "GET",
+                "name" : "log",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "max" : {
+                         "description" : "Maximum number of entries.",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {},
+                      "type" : "object"
+                   },
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/log",
+          "text" : "log"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Resources index (cluster wide).",
+                "method" : "GET",
+                "name" : "resources",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "type" : {
+                         "enum" : [
+                            "vm",
+                            "storage",
+                            "node",
+                            "sdn"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "cgroup-mode" : {
+                            "description" : "The cgroup mode the node operates under (when type == node).",
+                            "optional" : 1,
+                            "type" : "integer"
+                         },
+                         "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).",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "renderer" : "fraction_as_percentage",
+                            "type" : "number"
+                         },
+                         "disk" : {
+                            "description" : "Used disk space in bytes (when type in storage), used root image spave for VMs (type in qemu,lxc).",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "renderer" : "bytes",
+                            "type" : "integer"
+                         },
+                         "hastate" : {
+                            "description" : "HA service status (for HA managed VMs).",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "id" : {
+                            "type" : "string"
+                         },
+                         "level" : {
+                            "description" : "Support level (when type == node).",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "maxcpu" : {
+                            "description" : "Number of available CPUs (when type in node,qemu,lxc).",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "type" : "number"
+                         },
+                         "maxdisk" : {
+                            "description" : "Storage size in bytes (when type in storage), root image size for VMs (type in qemu,lxc).",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "renderer" : "bytes",
+                            "type" : "integer"
+                         },
+                         "maxmem" : {
+                            "description" : "Number of available memory in bytes (when type in node,qemu,lxc).",
+                            "optional" : 1,
+                            "renderer" : "bytes",
+                            "type" : "integer"
+                         },
+                         "mem" : {
+                            "description" : "Used memory in bytes (when type in node,qemu,lxc).",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "renderer" : "bytes",
+                            "type" : "integer"
+                         },
+                         "name" : {
+                            "description" : "Name of the resource.",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "node" : {
+                            "description" : "The cluster node name (when type in node,storage,qemu,lxc).",
+                            "format" : "pve-node",
+                            "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,
+                            "type" : "string"
+                         },
+                         "status" : {
+                            "description" : "Resource type dependent status.",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "storage" : {
+                            "description" : "The storage identifier (when type == storage).",
+                            "format" : "pve-storage-id",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "type" : {
+                            "description" : "Resource type.",
+                            "enum" : [
+                               "node",
+                               "storage",
+                               "pool",
+                               "qemu",
+                               "lxc",
+                               "openvz",
+                               "sdn"
+                            ],
+                            "type" : "string"
+                         },
+                         "uptime" : {
+                            "description" : "Node uptime in seconds (when type in node,qemu,lxc).",
+                            "optional" : 1,
+                            "renderer" : "duration",
+                            "type" : "integer"
+                         },
+                         "vmid" : {
+                            "description" : "The numerical vmid (when type in qemu,lxc).",
+                            "minimum" : 1,
+                            "optional" : 1,
+                            "type" : "integer"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/resources",
+          "text" : "resources"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "List recent tasks (cluster wide).",
+                "method" : "GET",
+                "name" : "tasks",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "upid" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/tasks",
+          "text" : "tasks"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Get datacenter options. Without 'Sys.Audit' on '/' not all options are returned.",
+                "method" : "GET",
+                "name" : "get_options",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Audit"
+                      ]
+                   ],
+                   "user" : "all"
+                },
+                "returns" : {
+                   "type" : "object"
+                }
+             },
+             "PUT" : {
+                "allowtoken" : 1,
+                "description" : "Set datacenter options.",
+                "method" : "PUT",
+                "name" : "set_options",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "bwlimit" : {
+                         "description" : "Set bandwidth/io limits various operations.",
+                         "format" : {
+                            "clone" : {
+                               "description" : "bandwidth limit in KiB/s for cloning disks",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "default" : {
+                               "description" : "default bandwidth limit in KiB/s",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "migration" : {
+                               "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "move" : {
+                               "description" : "bandwidth limit in KiB/s for moving disks",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "restore" : {
+                               "description" : "bandwidth limit in KiB/s for restoring guests from backups",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
+                      },
+                      "console" : {
+                         "description" : "Select the default Console viewer. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer comtatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.",
+                         "enum" : [
+                            "applet",
+                            "vv",
+                            "html5",
+                            "xtermjs"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "crs" : {
+                         "description" : "Cluster resource scheduling settings.",
+                         "format" : {
+                            "ha" : {
+                               "default" : "basic",
+                               "description" : "Use this resource scheduler mode for HA.",
+                               "enum" : [
+                                  "basic",
+                                  "static"
+                               ],
+                               "type" : "string",
+                               "verbose_description" : "Configures how the HA manager should select nodes to start or recover services. With 'basic', only the number of services is used, with 'static', static CPU and memory configuration of services is considered."
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "ha=<basic|static>"
+                      },
+                      "delete" : {
+                         "description" : "A list of settings you want to delete.",
+                         "format" : "pve-configid-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "description" : {
+                         "description" : "Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.",
+                         "maxLength" : 65536,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "email_from" : {
+                         "description" : "Specify email address to send notification from (default is root@$hostname)",
+                         "format" : "email-opt",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "fencing" : {
+                         "default" : "watchdog",
+                         "description" : "Set the fencing mode of the HA cluster. Hardware mode needs a valid configuration of fence devices in /etc/pve/ha/fence.cfg. With both all two modes are used.\n\nWARNING: 'hardware' and 'both' are EXPERIMENTAL & WIP",
+                         "enum" : [
+                            "watchdog",
+                            "hardware",
+                            "both"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "ha" : {
+                         "description" : "Cluster wide HA settings.",
+                         "format" : {
+                            "shutdown_policy" : {
+                               "default" : "conditional",
+                               "description" : "The policy for HA services on node shutdown. 'freeze' disables auto-recovery, 'failover' ensures recovery, 'conditional' recovers on poweroff and freezes on reboot. 'migrate' will migrate running services to other nodes, if possible. With 'freeze' or 'failover', HA Services will always get stopped first on shutdown.",
+                               "enum" : [
+                                  "freeze",
+                                  "failover",
+                                  "conditional",
+                                  "migrate"
+                               ],
+                               "type" : "string",
+                               "verbose_description" : "Describes the policy for handling HA services on poweroff or reboot of a node. Freeze will always freeze services which are still located on the node on shutdown, those services won't be recovered by the HA manager. Failover will not mark the services as frozen and thus the services will get recovered to other nodes, if the shutdown node does not come up again quickly (< 1min). 'conditional' chooses automatically depending on the type of shutdown, i.e., on a reboot the service will be frozen but on a poweroff the service will stay as is, and thus get recovered after about 2 minutes. Migrate will try to move all running services to another node when a reboot or shutdown was triggered. The poweroff process will only continue once no running services are located on the node anymore. If the node comes up again, the service will be moved back to the previously powered-off node, at least if no other migration, reloaction or recovery took place."
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "shutdown_policy=<enum>"
+                      },
+                      "http_proxy" : {
+                         "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')",
+                         "optional" : 1,
+                         "pattern" : "http://.*",
+                         "type" : "string"
+                      },
+                      "keyboard" : {
+                         "description" : "Default keybord layout for vnc server.",
+                         "enum" : [
+                            "de",
+                            "de-ch",
+                            "da",
+                            "en-gb",
+                            "en-us",
+                            "es",
+                            "fi",
+                            "fr",
+                            "fr-be",
+                            "fr-ca",
+                            "fr-ch",
+                            "hu",
+                            "is",
+                            "it",
+                            "ja",
+                            "lt",
+                            "mk",
+                            "nl",
+                            "no",
+                            "pl",
+                            "pt",
+                            "pt-br",
+                            "sv",
+                            "sl",
+                            "tr"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "language" : {
+                         "description" : "Default GUI language.",
+                         "enum" : [
+                            "ca",
+                            "da",
+                            "de",
+                            "en",
+                            "es",
+                            "eu",
+                            "fa",
+                            "fr",
+                            "he",
+                            "it",
+                            "ja",
+                            "nb",
+                            "nn",
+                            "pl",
+                            "pt_BR",
+                            "ru",
+                            "sl",
+                            "sv",
+                            "tr",
+                            "zh_CN",
+                            "zh_TW"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "mac_prefix" : {
+                         "description" : "Prefix for autogenerated MAC addresses.",
+                         "format" : "mac-prefix",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "max_workers" : {
+                         "description" : "Defines how many workers (per node) are maximal started  on actions like 'stopall VMs' or task from the ha-manager.",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      },
+                      "migration" : {
+                         "description" : "For cluster wide migration settings.",
+                         "format" : {
+                            "network" : {
+                               "description" : "CIDR of the (sub) network that is used for migration.",
+                               "format" : "CIDR",
+                               "format_description" : "CIDR",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "type" : {
+                               "default" : "secure",
+                               "default_key" : 1,
+                               "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
+                               "enum" : [
+                                  "secure",
+                                  "insecure"
+                               ],
+                               "type" : "string"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[type=]<secure|insecure> [,network=<CIDR>]"
+                      },
+                      "migration_unsecure" : {
+                         "description" : "Migration is secure using SSH tunnel by default. For secure private networks you can disable it to speed up migration. Deprecated, use the 'migration' property instead!",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "next-id" : {
+                         "description" : "Control the range for the free VMID auto-selection pool.",
+                         "format" : {
+                            "lower" : {
+                               "default" : 100,
+                               "description" : "Lower, inclusive boundary for free next-id API range.",
+                               "max" : 999999999,
+                               "min" : 100,
+                               "optional" : 1,
+                               "type" : "integer"
+                            },
+                            "upper" : {
+                               "default" : 1000000,
+                               "description" : "Upper, exclusive boundary for free next-id API range.",
+                               "max" : 1000000000,
+                               "min" : 100,
+                               "optional" : 1,
+                               "type" : "integer"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[lower=<integer>] [,upper=<integer>]"
+                      },
+                      "registered-tags" : {
+                         "description" : "A list of tags that require a `Sys.Modify` on '/' to set and delete. Tags set here that are also in 'user-tag-access' also require `Sys.Modify`.",
+                         "optional" : 1,
+                         "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*);)*(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)",
+                         "type" : "string",
+                         "typetext" : "<tag>[;<tag>...]"
+                      },
+                      "tag-style" : {
+                         "description" : "Tag style options.",
+                         "format" : {
+                            "case-sensitive" : {
+                               "default" : 0,
+                               "description" : "Controls if filtering for unique tags on update should check case-sensitive.",
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "color-map" : {
+                               "description" : "Manual color mapping for tags (semicolon separated).",
+                               "optional" : 1,
+                               "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?)(?:;(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?))*",
+                               "type" : "string",
+                               "typetext" : "<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]"
+                            },
+                            "ordering" : {
+                               "default" : "alphabetical",
+                               "description" : "Controls the sorting of the tags in the web-interface and the API update.",
+                               "enum" : [
+                                  "config",
+                                  "alphabetical"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "shape" : {
+                               "default" : "circle",
+                               "description" : "Tag shape for the web ui tree. 'full' draws the full tag. 'circle' draws only a circle with the background color. 'dense' only draws a small rectancle (useful when many tags are assigned to each guest).'none' disables showing the tags.",
+                               "enum" : [
+                                  "full",
+                                  "circle",
+                                  "dense",
+                                  "none"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[case-sensitive=<1|0>] [,color-map=<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]] [,ordering=<config|alphabetical>] [,shape=<enum>]"
+                      },
+                      "u2f" : {
+                         "description" : "u2f",
+                         "format" : {
+                            "appid" : {
+                               "description" : "U2F AppId URL override. Defaults to the origin.",
+                               "format_description" : "APPID",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "origin" : {
+                               "description" : "U2F Origin override. Mostly useful for single nodes with a single URL.",
+                               "format_description" : "URL",
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[appid=<APPID>] [,origin=<URL>]"
+                      },
+                      "user-tag-access" : {
+                         "description" : "Privilege options for user-settable tags",
+                         "format" : {
+                            "user-allow" : {
+                               "default" : "free",
+                               "description" : "Controls tag usage for users without `Sys.Modify` on `/` by either allowing `none`, a `list`, already `existing` or anything (`free`).",
+                               "enum" : [
+                                  "none",
+                                  "list",
+                                  "existing",
+                                  "free"
+                               ],
+                               "optional" : 1,
+                               "type" : "string",
+                               "verbose_description" : "Controls which tags can be set or deleted on resources a user controls (such as guests). Users with the `Sys.Modify` privilege on `/` are always  unrestricted. 'none' no tags are usable. 'list' tags from 'user-allow-list' are usable. 'existing' like list, but already existing tags of resources are also usable.'free' no tag restrictions."
+                            },
+                            "user-allow-list" : {
+                               "description" : "List of tags users are allowed to set and delete (semicolon separated) for 'user-allow' values 'list' and 'existing'.",
+                               "optional" : 1,
+                               "pattern" : "(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)(?:;(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*))*",
+                               "type" : "string",
+                               "typetext" : "<tag>[;<tag>...]"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[user-allow=<enum>] [,user-allow-list=<tag>[;<tag>...]]"
+                      },
+                      "webauthn" : {
+                         "description" : "webauthn configuration",
+                         "format" : {
+                            "allow-subdomains" : {
+                               "default" : 1,
+                               "description" : "Whether to allow the origin to be a subdomain, rather than the exact URL.",
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "id" : {
+                               "description" : "Relying party ID. Must be the domain name without protocol, port or location. Changing this *will* break existing credentials.",
+                               "format_description" : "DOMAINNAME",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "origin" : {
+                               "description" : "Site origin. Must be a `https://` URL (or `http://localhost`). Should contain the address users type in their browsers to access the web interface. Changing this *may* break existing credentials.",
+                               "format_description" : "URL",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "rp" : {
+                               "description" : "Relying party name. Any text identifier. Changing this *may* break existing credentials.",
+                               "format_description" : "RELYING_PARTY",
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[allow-subdomains=<1|0>] [,id=<DOMAINNAME>] [,origin=<URL>] [,rp=<RELYING_PARTY>]"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Modify"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/options",
+          "text" : "options"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Get cluster status information.",
+                "method" : "GET",
+                "name" : "get_status",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/",
+                      [
+                         "Sys.Audit"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "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"
+                   },
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/status",
+          "text" : "status"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Get next free VMID. Pass a VMID to assert that its free (at time of check).",
+                "method" : "GET",
+                "name" : "nextid",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "vmid" : {
+                         "description" : "The (unique) ID of the VM.",
+                         "format" : "pve-vmid",
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - N)"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "description" : "The next free VMID.",
+                   "type" : "integer"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/cluster/nextid",
+          "text" : "nextid"
+       }
+    ],
+    "info" : {
+       "GET" : {
+          "allowtoken" : 1,
+          "description" : "Cluster 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",
+    "text" : "cluster"
+ },
+ {
+    "children" : [
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "children" : [
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Delete rule.",
+                                              "method" : "DELETE",
+                                              "name" : "delete_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "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>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Get single rule data.",
+                                              "method" : "GET",
+                                              "name" : "get_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "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.Audit"
+                                                    ]
+                                                 ]
+                                              },
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "properties" : {
+                                                    "action" : {
+                                                       "type" : "string"
+                                                    },
+                                                    "comment" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "dest" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "dport" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "enable" : {
+                                                       "optional" : 1,
+                                                       "type" : "integer"
+                                                    },
+                                                    "icmp-type" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "iface" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "ipversion" : {
+                                                       "optional" : 1,
+                                                       "type" : "integer"
+                                                    },
+                                                    "log" : {
+                                                       "description" : "Log level for firewall rule",
+                                                       "enum" : [
+                                                          "emerg",
+                                                          "alert",
+                                                          "crit",
+                                                          "err",
+                                                          "warning",
+                                                          "notice",
+                                                          "info",
+                                                          "debug",
+                                                          "nolog"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "macro" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "pos" : {
+                                                       "type" : "integer"
+                                                    },
+                                                    "proto" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "source" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "sport" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "type" : {
+                                                       "type" : "string"
+                                                    }
+                                                 },
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Modify rule data.",
+                                              "method" : "PUT",
+                                              "name" : "update_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "action" : {
+                                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                                       "maxLength" : 20,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "comment" : {
+                                                       "description" : "Descriptive comment.",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "delete" : {
+                                                       "description" : "A list of settings you want to delete.",
+                                                       "format" : "pve-configid-list",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "dport" : {
+                                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                       "format" : "pve-fw-dport-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "enable" : {
+                                                       "description" : "Flag to enable/disable a rule.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "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",
+                                                       "maxLength" : 20,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "log" : {
+                                                       "description" : "Log level for firewall rule.",
+                                                       "enum" : [
+                                                          "emerg",
+                                                          "alert",
+                                                          "crit",
+                                                          "err",
+                                                          "warning",
+                                                          "notice",
+                                                          "info",
+                                                          "debug",
+                                                          "nolog"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "macro" : {
+                                                       "description" : "Use predefined standard macro.",
+                                                       "maxLength" : 128,
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "moveto" : {
+                                                       "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "type" : "integer",
+                                                       "typetext" : "<integer> (0 - N)"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "type" : "integer",
+                                                       "typetext" : "<integer> (0 - N)"
+                                                    },
+                                                    "proto" : {
+                                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                                       "format" : "pve-fw-protocol-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "sport" : {
+                                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                       "format" : "pve-fw-sport-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "type" : {
+                                                       "description" : "Rule type.",
+                                                       "enum" : [
+                                                          "in",
+                                                          "out",
+                                                          "group"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}",
+                                        "text" : "{pos}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List rules.",
+                                        "method" : "GET",
+                                        "name" : "get_rules",
+                                        "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" : null,
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "pos" : {
+                                                    "type" : "integer"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{pos}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create new rule.",
+                                        "method" : "POST",
+                                        "name" : "create_rule",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "action" : {
+                                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                                 "maxLength" : 20,
+                                                 "minLength" : 2,
+                                                 "optional" : 0,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "comment" : {
+                                                 "description" : "Descriptive comment.",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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>"
+                                              },
+                                              "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>"
+                                              },
+                                              "dport" : {
+                                                 "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                 "format" : "pve-fw-dport-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "enable" : {
+                                                 "description" : "Flag to enable/disable a rule.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "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",
+                                                 "maxLength" : 20,
+                                                 "minLength" : 2,
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "log" : {
+                                                 "description" : "Log level for firewall rule.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macro" : {
+                                                 "description" : "Use predefined standard macro.",
+                                                 "maxLength" : 128,
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "pos" : {
+                                                 "description" : "Update rule at position <pos>.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (0 - N)"
+                                              },
+                                              "proto" : {
+                                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                                 "format" : "pve-fw-protocol-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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>"
+                                              },
+                                              "sport" : {
+                                                 "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                 "format" : "pve-fw-sport-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "type" : {
+                                                 "description" : "Rule type.",
+                                                 "enum" : [
+                                                    "in",
+                                                    "out",
+                                                    "group"
+                                                 ],
+                                                 "optional" : 0,
+                                                 "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : null,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules",
+                                  "text" : "rules"
+                               },
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Remove IP or Network alias.",
+                                              "method" : "DELETE",
+                                              "name" : "remove_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "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>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Read alias.",
+                                              "method" : "GET",
+                                              "name" : "read_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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"
+                                                    ]
+                                                 ]
+                                              },
+                                              "returns" : {
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Update IP or Network alias.",
+                                              "method" : "PUT",
+                                              "name" : "update_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "cidr" : {
+                                                       "description" : "Network/IP specification in CIDR format.",
+                                                       "format" : "IPorCIDR",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "rename" : {
+                                                       "description" : "Rename an existing alias.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}",
+                                        "text" : "{name}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List aliases",
+                                        "method" : "GET",
+                                        "name" : "get_aliases",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "cidr" : {
+                                                    "type" : "string"
+                                                 },
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "digest" : {
+                                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                    "maxLength" : 40,
+                                                    "optional" : 0,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{name}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create IP or Network Alias.",
+                                        "method" : "POST",
+                                        "name" : "create_alias",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "cidr" : {
+                                                 "description" : "Network/IP specification in CIDR format.",
+                                                 "format" : "IPorCIDR",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "comment" : {
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "name" : {
+                                                 "description" : "Alias name.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases",
+                                  "text" : "aliases"
+                               },
+                               {
+                                  "children" : [
+                                     {
+                                        "children" : [
+                                           {
+                                              "info" : {
+                                                 "DELETE" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Remove IP or Network from IPSet.",
+                                                    "method" : "DELETE",
+                                                    "name" : "remove_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "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>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "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.Config.Network"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "null"
+                                                    }
+                                                 },
+                                                 "GET" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Read IP or Network settings from IPSet.",
+                                                    "method" : "GET",
+                                                    "name" : "read_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "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"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "object"
+                                                    }
+                                                 },
+                                                 "PUT" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Update IP or Network settings",
+                                                    "method" : "PUT",
+                                                    "name" : "update_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "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>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "node" : {
+                                                             "description" : "The cluster node name.",
+                                                             "format" : "pve-node",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "nomatch" : {
+                                                             "optional" : 1,
+                                                             "type" : "boolean",
+                                                             "typetext" : "<boolean>"
+                                                          },
+                                                          "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.Config.Network"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "null"
+                                                    }
+                                                 }
+                                              },
+                                              "leaf" : 1,
+                                              "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}",
+                                              "text" : "{cidr}"
+                                           }
+                                        ],
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Delete IPSet",
+                                              "method" : "DELETE",
+                                              "name" : "delete_ipset",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "force" : {
+                                                       "description" : "Delete all members of the IPSet, if there are any.",
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "List IPSet content",
+                                              "method" : "GET",
+                                              "name" : "get_ipset",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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"
+                                                    ]
+                                                 ]
+                                              },
+                                              "returns" : {
+                                                 "items" : {
+                                                    "properties" : {
+                                                       "cidr" : {
+                                                          "type" : "string"
+                                                       },
+                                                       "comment" : {
+                                                          "optional" : 1,
+                                                          "type" : "string"
+                                                       },
+                                                       "digest" : {
+                                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                          "maxLength" : 40,
+                                                          "optional" : 0,
+                                                          "type" : "string"
+                                                       },
+                                                       "nomatch" : {
+                                                          "optional" : 1,
+                                                          "type" : "boolean"
+                                                       }
+                                                    },
+                                                    "type" : "object"
+                                                 },
+                                                 "links" : [
+                                                    {
+                                                       "href" : "{cidr}",
+                                                       "rel" : "child"
+                                                    }
+                                                 ],
+                                                 "type" : "array"
+                                              }
+                                           },
+                                           "POST" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Add IP or Network to IPSet.",
+                                              "method" : "POST",
+                                              "name" : "create_ip",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "cidr" : {
+                                                       "description" : "Network/IP specification in CIDR format.",
+                                                       "format" : "IPorCIDRorAlias",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "comment" : {
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "nomatch" : {
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 0,
+                                        "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}",
+                                        "text" : "{name}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List IPSets",
+                                        "method" : "GET",
+                                        "name" : "ipset_index",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "digest" : {
+                                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                    "maxLength" : 40,
+                                                    "optional" : 0,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "description" : "IP set name.",
+                                                    "maxLength" : 64,
+                                                    "minLength" : 2,
+                                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{name}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create new IPSet",
+                                        "method" : "POST",
+                                        "name" : "create_ipset",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "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>"
+                                              },
+                                              "name" : {
+                                                 "description" : "IP set name.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "rename" : {
+                                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "optional" : 1,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset",
+                                  "text" : "ipset"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Get VM firewall options.",
+                                        "method" : "GET",
+                                        "name" : "get_options",
+                                        "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" : {
+                                           "properties" : {
+                                              "dhcp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable DHCP.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "enable" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable/disable firewall rules.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ipfilter" : {
+                                                 "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "log_level_in" : {
+                                                 "description" : "Log level for incoming traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "log_level_out" : {
+                                                 "description" : "Log level for outgoing traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macfilter" : {
+                                                 "default" : 1,
+                                                 "description" : "Enable/disable MAC address filter.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ndp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "policy_in" : {
+                                                 "description" : "Input policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "policy_out" : {
+                                                 "description" : "Output policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "radv" : {
+                                                 "description" : "Allow sending Router Advertisement.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     },
+                                     "PUT" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Set Firewall options.",
+                                        "method" : "PUT",
+                                        "name" : "set_options",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "delete" : {
+                                                 "description" : "A list of settings you want to delete.",
+                                                 "format" : "pve-configid-list",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "dhcp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable DHCP.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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>"
+                                              },
+                                              "enable" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable/disable firewall rules.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "ipfilter" : {
+                                                 "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "log_level_in" : {
+                                                 "description" : "Log level for incoming traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "log_level_out" : {
+                                                 "description" : "Log level for outgoing traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macfilter" : {
+                                                 "default" : 1,
+                                                 "description" : "Enable/disable MAC address filter.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "ndp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "policy_in" : {
+                                                 "description" : "Input policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "policy_out" : {
+                                                 "description" : "Output policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "radv" : {
+                                                 "description" : "Allow sending Router Advertisement.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/options",
+                                  "text" : "options"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Read firewall log",
+                                        "method" : "GET",
+                                        "name" : "log",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "limit" : {
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (0 - N)"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "start" : {
+                                                 "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.Console"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "n" : {
+                                                    "description" : "Line number",
+                                                    "type" : "integer"
+                                                 },
+                                                 "t" : {
+                                                    "description" : "Line text",
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/log",
+                                  "text" : "log"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
+                                        "method" : "GET",
+                                        "name" : "refs",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "type" : {
+                                                 "description" : "Only list references of specified type.",
+                                                 "enum" : [
+                                                    "alias",
+                                                    "ipset"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "type" : "string"
+                                                 },
+                                                 "type" : {
+                                                    "enum" : [
+                                                       "alias",
+                                                       "ipset"
+                                                    ],
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/firewall/refs",
+                                  "text" : "refs"
+                               }
+                            ],
+                            "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>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "user" : "all"
+                                  },
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{name}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/qemu/{vmid}/firewall",
+                            "text" : "firewall"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute fsfreeze-freeze.",
+                                        "method" : "POST",
+                                        "name" : "fsfreeze-freeze",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-freeze",
+                                  "text" : "fsfreeze-freeze"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute fsfreeze-status.",
+                                        "method" : "POST",
+                                        "name" : "fsfreeze-status",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-status",
+                                  "text" : "fsfreeze-status"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute fsfreeze-thaw.",
+                                        "method" : "POST",
+                                        "name" : "fsfreeze-thaw",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-thaw",
+                                  "text" : "fsfreeze-thaw"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute fstrim.",
+                                        "method" : "POST",
+                                        "name" : "fstrim",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/fstrim",
+                                  "text" : "fstrim"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-fsinfo.",
+                                        "method" : "GET",
+                                        "name" : "get-fsinfo",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-fsinfo",
+                                  "text" : "get-fsinfo"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-host-name.",
+                                        "method" : "GET",
+                                        "name" : "get-host-name",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-host-name",
+                                  "text" : "get-host-name"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-memory-block-info.",
+                                        "method" : "GET",
+                                        "name" : "get-memory-block-info",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-block-info",
+                                  "text" : "get-memory-block-info"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-memory-blocks.",
+                                        "method" : "GET",
+                                        "name" : "get-memory-blocks",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-blocks",
+                                  "text" : "get-memory-blocks"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-osinfo.",
+                                        "method" : "GET",
+                                        "name" : "get-osinfo",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-osinfo",
+                                  "text" : "get-osinfo"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-time.",
+                                        "method" : "GET",
+                                        "name" : "get-time",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-time",
+                                  "text" : "get-time"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-timezone.",
+                                        "method" : "GET",
+                                        "name" : "get-timezone",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-timezone",
+                                  "text" : "get-timezone"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-users.",
+                                        "method" : "GET",
+                                        "name" : "get-users",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-users",
+                                  "text" : "get-users"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute get-vcpus.",
+                                        "method" : "GET",
+                                        "name" : "get-vcpus",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/get-vcpus",
+                                  "text" : "get-vcpus"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute info.",
+                                        "method" : "GET",
+                                        "name" : "info",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/info",
+                                  "text" : "info"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute network-get-interfaces.",
+                                        "method" : "GET",
+                                        "name" : "network-get-interfaces",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/network-get-interfaces",
+                                  "text" : "network-get-interfaces"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute ping.",
+                                        "method" : "POST",
+                                        "name" : "ping",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/ping",
+                                  "text" : "ping"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute shutdown.",
+                                        "method" : "POST",
+                                        "name" : "shutdown",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/shutdown",
+                                  "text" : "shutdown"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute suspend-disk.",
+                                        "method" : "POST",
+                                        "name" : "suspend-disk",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-disk",
+                                  "text" : "suspend-disk"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute suspend-hybrid.",
+                                        "method" : "POST",
+                                        "name" : "suspend-hybrid",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-hybrid",
+                                  "text" : "suspend-hybrid"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Execute suspend-ram.",
+                                        "method" : "POST",
+                                        "name" : "suspend-ram",
+                                        "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-ram",
+                                  "text" : "suspend-ram"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Sets the password for the given user to the given password",
+                                        "method" : "POST",
+                                        "name" : "set-user-password",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "crypted" : {
+                                                 "default" : 0,
+                                                 "description" : "set to 1 if the password has already been passed through crypt()",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "password" : {
+                                                 "description" : "The new password.",
+                                                 "maxLength" : 1024,
+                                                 "minLength" : 5,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "username" : {
+                                                 "description" : "The user to set the password for.",
+                                                 "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a single `result` property.",
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/set-user-password",
+                                  "text" : "set-user-password"
+                               },
+                               {
+                                  "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",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "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>"
+                                              },
+                                              "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "properties" : {
+                                              "pid" : {
+                                                 "description" : "The PID of the process started by the guest-agent.",
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/exec",
+                                  "text" : "exec"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Gets the status of the given pid started by the guest-agent",
+                                        "method" : "GET",
+                                        "name" : "exec-status",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "pid" : {
+                                                 "description" : "The PID to query",
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer>"
+                                              },
+                                              "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "properties" : {
+                                              "err-data" : {
+                                                 "description" : "stderr of the process",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "err-truncated" : {
+                                                 "description" : "true if stderr was not fully captured",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "exitcode" : {
+                                                 "description" : "process exit code if it was normally terminated.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "exited" : {
+                                                 "description" : "Tells if the given command has exited yet.",
+                                                 "type" : "boolean"
+                                              },
+                                              "out-data" : {
+                                                 "description" : "stdout of the process",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "out-truncated" : {
+                                                 "description" : "true if stdout was not fully captured",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "signal" : {
+                                                 "description" : "signal number or exception code if the process was abnormally terminated.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/exec-status",
+                                  "text" : "exec-status"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Reads the given file via guest agent. Is limited to 16777216 bytes.",
+                                        "method" : "GET",
+                                        "name" : "file-read",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "file" : {
+                                                 "description" : "The path to the file",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "Returns an object with a `content` property.",
+                                           "properties" : {
+                                              "content" : {
+                                                 "description" : "The content of the file, maximum 16777216",
+                                                 "type" : "string"
+                                              },
+                                              "truncated" : {
+                                                 "description" : "If set to 1, the output is truncated and not complete",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/file-read",
+                                  "text" : "file-read"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Writes the given file via guest agent.",
+                                        "method" : "POST",
+                                        "name" : "file-write",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "content" : {
+                                                 "description" : "The content to write into the file.",
+                                                 "maxLength" : 61440,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "encode" : {
+                                                 "default" : 1,
+                                                 "description" : "If set, the content will be encoded as base64 (required by QEMU).Otherwise the content needs to be encoded beforehand - defaults to true.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "file" : {
+                                                 "description" : "The path to the file.",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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.Monitor"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/agent/file-write",
+                                  "text" : "file-write"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Qemu Agent command index.",
+                                  "method" : "GET",
+                                  "name" : "index",
+                                  "parameters" : {
+                                     "additionalProperties" : 1,
+                                     "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" : {
+                                     "user" : "all"
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "Returns the list of Qemu Agent commands",
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{name}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Execute Qemu Guest Agent commands.",
+                                  "method" : "POST",
+                                  "name" : "agent",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "command" : {
+                                           "description" : "The QGA command.",
+                                           "enum" : [
+                                              "fsfreeze-freeze",
+                                              "fsfreeze-status",
+                                              "fsfreeze-thaw",
+                                              "fstrim",
+                                              "get-fsinfo",
+                                              "get-host-name",
+                                              "get-memory-block-info",
+                                              "get-memory-blocks",
+                                              "get-osinfo",
+                                              "get-time",
+                                              "get-timezone",
+                                              "get-users",
+                                              "get-vcpus",
+                                              "info",
+                                              "network-get-interfaces",
+                                              "ping",
+                                              "shutdown",
+                                              "suspend-disk",
+                                              "suspend-hybrid",
+                                              "suspend-ram"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "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.Monitor"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "Returns an object with a single `result` property.",
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/qemu/{vmid}/agent",
+                            "text" : "agent"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read VM RRD statistics (returns PNG)",
+                                  "method" : "GET",
+                                  "name" : "rrd",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ds" : {
+                                           "description" : "The list of datasources you want to display.",
+                                           "format" : "pve-configid-list",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "properties" : {
+                                        "filename" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/rrd",
+                            "text" : "rrd"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read VM RRD statistics",
+                                  "method" : "GET",
+                                  "name" : "rrddata",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/rrddata",
+                            "text" : "rrddata"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "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" : {
+                                     "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",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapshot" : {
+                                           "description" : "Fetch config values from given snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "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.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "The VM configuration.",
+                                     "properties" : {
+                                        "acpi" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable ACPI.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "affinity" : {
+                                           "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                           "format" : "pve-cpuset",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "agent" : {
+                                           "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                           "format" : {
+                                              "enabled" : {
+                                                 "default" : 0,
+                                                 "default_key" : 1,
+                                                 "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                 "type" : "boolean"
+                                              },
+                                              "fstrim_cloned_disks" : {
+                                                 "default" : 0,
+                                                 "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"
+                                        },
+                                        "arch" : {
+                                           "description" : "Virtual processor architecture. Defaults to the host.",
+                                           "enum" : [
+                                              "x86_64",
+                                              "aarch64"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "args" : {
+                                           "description" : "Arbitrary arguments passed to kvm.",
+                                           "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).",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "balloon" : {
+                                           "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "bios" : {
+                                           "default" : "seabios",
+                                           "description" : "Select BIOS implementation.",
+                                           "enum" : [
+                                              "seabios",
+                                              "ovmf"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "boot" : {
+                                           "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
+                                           "format" : "pve-qm-boot",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "bootdisk" : {
+                                           "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+",
+                                           "type" : "string"
+                                        },
+                                        "cdrom" : {
+                                           "description" : "This is an alias for option -ide2",
+                                           "format" : "pve-qm-ide",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<volume>"
+                                        },
+                                        "cicustom" : {
+                                           "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
+                                           "format" : "pve-qm-cicustom",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "cipassword" : {
+                                           "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "citype" : {
+                                           "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",
+                                              "opennebula"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ciuser" : {
+                                           "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "cores" : {
+                                           "default" : 1,
+                                           "description" : "The number of cores per socket.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "cpu" : {
+                                           "description" : "Emulated CPU type.",
+                                           "format" : "pve-vm-cpu-conf",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "cpulimit" : {
+                                           "default" : 0,
+                                           "description" : "Limit of CPU usage.",
+                                           "maximum" : 128,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
+                                        },
+                                        "cpuunits" : {
+                                           "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                           "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
+                                           "maximum" : 262144,
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "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. Shown in the web-interface VM's summary. This is saved as comment inside the configuration file.",
+                                           "maxLength" : 8192,
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "digest" : {
+                                           "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.",
+                                           "type" : "string"
+                                        },
+                                        "efidisk0" : {
+                                           "description" : "Configure a Disk for storing EFI vars.",
+                                           "format" : {
+                                              "efitype" : {
+                                                 "default" : "2m",
+                                                 "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                 "enum" : [
+                                                    "2m",
+                                                    "4m"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "pre-enrolled-keys" : {
+                                                 "default" : 0,
+                                                 "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "freeze" : {
+                                           "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "hookscript" : {
+                                           "description" : "Script that will be executed during various steps in the vms lifetime.",
+                                           "format" : "pve-volume-id",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "hostpci[n]" : {
+                                           "description" : "Map host PCI devices into guest.",
+                                           "format" : "pve-qm-hostpci",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "hotplug" : {
+                                           "default" : "network,disk,usb",
+                                           "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
+                                           "format" : "pve-hotplug-features",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "hugepages" : {
+                                           "description" : "Enable/disable hugepages memory.",
+                                           "enum" : [
+                                              "any",
+                                              "2",
+                                              "1024"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ide[n]" : {
+                                           "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "model" : {
+                                                 "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "model",
+                                                 "maxLength" : 120,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "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\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"
+                                        },
+                                        "ivshmem" : {
+                                           "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
+                                           "format" : {
+                                              "name" : {
+                                                 "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
+                                                 "format_description" : "string",
+                                                 "optional" : 1,
+                                                 "pattern" : "[a-zA-Z0-9\\-]+",
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "The size of the file in MB.",
+                                                 "minimum" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
+                                           "enum" : [
+                                              "de",
+                                              "de-ch",
+                                              "da",
+                                              "en-gb",
+                                              "en-us",
+                                              "es",
+                                              "fi",
+                                              "fr",
+                                              "fr-be",
+                                              "fr-ca",
+                                              "fr-ch",
+                                              "hu",
+                                              "is",
+                                              "it",
+                                              "ja",
+                                              "lt",
+                                              "mk",
+                                              "nl",
+                                              "no",
+                                              "pl",
+                                              "pt",
+                                              "pt-br",
+                                              "sv",
+                                              "sl",
+                                              "tr"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "kvm" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable KVM hardware virtualization.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "localtime" : {
+                                           "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "lock" : {
+                                           "description" : "Lock/unlock the VM.",
+                                           "enum" : [
+                                              "backup",
+                                              "clone",
+                                              "create",
+                                              "migrate",
+                                              "rollback",
+                                              "snapshot",
+                                              "snapshot-delete",
+                                              "suspending",
+                                              "suspended"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "machine" : {
+                                           "description" : "Specifies the Qemu machine type.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "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" : {
+                                           "default" : 512,
+                                           "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "migrate_downtime" : {
+                                           "default" : 0.1,
+                                           "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number"
+                                        },
+                                        "migrate_speed" : {
+                                           "default" : 0,
+                                           "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "name" : {
+                                           "description" : "Set a name for the VM. Only used on the configuration web interface.",
+                                           "format" : "dns-name",
+                                           "optional" : 1,
+                                           "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.",
+                                           "format" : "address-list",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "net[n]" : {
+                                           "description" : "Specify network devices.",
+                                           "format" : {
+                                              "bridge" : {
+                                                 "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" : "pve-bridge-id",
+                                                 "format_description" : "bridge",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "e1000" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82540em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82544gc" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82545em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000e" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "firewall" : {
+                                                 "description" : "Whether this interface should be protected by the firewall.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "i82551" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82557b" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82559er" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "link_down" : {
+                                                 "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "macaddr" : {
+                                                 "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
+                                                 "format" : "mac-addr",
+                                                 "format_description" : "XX:XX:XX:XX:XX:XX",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                              },
+                                              "model" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
+                                                 "enum" : [
+                                                    "e1000",
+                                                    "e1000-82540em",
+                                                    "e1000-82544gc",
+                                                    "e1000-82545em",
+                                                    "e1000e",
+                                                    "i82551",
+                                                    "i82557b",
+                                                    "i82559er",
+                                                    "ne2k_isa",
+                                                    "ne2k_pci",
+                                                    "pcnet",
+                                                    "rtl8139",
+                                                    "virtio",
+                                                    "vmxnet3"
+                                                 ],
+                                                 "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"
+                                              },
+                                              "ne2k_pci" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "pcnet" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of packet queues to be used on the device.",
+                                                 "maximum" : 64,
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "rate" : {
+                                                 "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "rtl8139" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "tag" : {
+                                                 "description" : "VLAN tag to apply to packets on this interface.",
+                                                 "maximum" : 4094,
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "trunks" : {
+                                                 "description" : "VLAN trunks to pass through this interface.",
+                                                 "format_description" : "vlanid[;vlanid...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "virtio" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "vmxnet3" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "numa" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable NUMA.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "numa[n]" : {
+                                           "description" : "NUMA topology.",
+                                           "format" : {
+                                              "cpus" : {
+                                                 "description" : "CPUs accessing this NUMA node.",
+                                                 "format_description" : "id[-id];...",
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "hostnodes" : {
+                                                 "description" : "Host NUMA nodes to use.",
+                                                 "format_description" : "id[-id];...",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "memory" : {
+                                                 "description" : "Amount of memory this NUMA node provides.",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "policy" : {
+                                                 "description" : "NUMA allocation policy.",
+                                                 "enum" : [
+                                                    "preferred",
+                                                    "bind",
+                                                    "interleave"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "onboot" : {
+                                           "default" : 0,
+                                           "description" : "Specifies whether a VM will be started during system bootup.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "ostype" : {
+                                           "description" : "Specify guest operating system.",
+                                           "enum" : [
+                                              "other",
+                                              "wxp",
+                                              "w2k",
+                                              "w2k3",
+                                              "w2k8",
+                                              "wvista",
+                                              "win7",
+                                              "win8",
+                                              "win10",
+                                              "win11",
+                                              "l24",
+                                              "l26",
+                                              "solaris"
+                                           ],
+                                           "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "protection" : {
+                                           "default" : 0,
+                                           "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "reboot" : {
+                                           "default" : 1,
+                                           "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "rng0" : {
+                                           "description" : "Configure a VirtIO-based Random Number Generator.",
+                                           "format" : {
+                                              "max_bytes" : {
+                                                 "default" : 1024,
+                                                 "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "period" : {
+                                                 "default" : 1000,
+                                                 "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "source" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
+                                                 "enum" : [
+                                                    "/dev/urandom",
+                                                    "/dev/random",
+                                                    "/dev/hwrng"
+                                                 ],
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "sata[n]" : {
+                                           "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "scsi[n]" : {
+                                           "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of queues.",
+                                                 "minimum" : 2,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "scsiblock" : {
+                                                 "default" : 0,
+                                                 "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "scsihw" : {
+                                           "default" : "lsi",
+                                           "description" : "SCSI controller model",
+                                           "enum" : [
+                                              "lsi",
+                                              "lsi53c810",
+                                              "virtio-scsi-pci",
+                                              "virtio-scsi-single",
+                                              "megasas",
+                                              "pvscsi"
+                                           ],
+                                           "optional" : 1,
+                                           "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.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "serial[n]" : {
+                                           "description" : "Create a serial device inside the VM (n is 0 to 3)",
+                                           "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "shares" : {
+                                           "default" : 1000,
+                                           "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
+                                           "maximum" : 50000,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "smbios1" : {
+                                           "description" : "Specify SMBIOS type 1 fields.",
+                                           "format" : "pve-qm-smbios1",
+                                           "maxLength" : 512,
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "smp" : {
+                                           "default" : 1,
+                                           "description" : "The number of CPUs. Please use option -sockets instead.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "sockets" : {
+                                           "default" : 1,
+                                           "description" : "The number of CPU sockets.",
+                                           "minimum" : 1,
+                                           "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",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "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'.",
+                                           "optional" : 1,
+                                           "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
+                                           "type" : "string",
+                                           "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
+                                        },
+                                        "startup" : {
+                                           "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                                           "format" : "pve-startup-order",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                                        },
+                                        "tablet" : {
+                                           "default" : 1,
+                                           "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 (`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,
+                                           "description" : "Enable/disable time drift fix.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "template" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable Template.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "tpmstate0" : {
+                                           "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'.",
+                                           "format" : {
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "version" : {
+                                                 "default" : "v2.0",
+                                                 "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                 "enum" : [
+                                                    "v1.2",
+                                                    "v2.0"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "unused[n]" : {
+                                           "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                                           "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"
+                                        },
+                                        "usb[n]" : {
+                                           "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
+                                           "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "vcpus" : {
+                                           "default" : 0,
+                                           "description" : "Number of hotplugged vcpus.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "vga" : {
+                                           "description" : "Configure the VGA hardware.",
+                                           "format" : {
+                                              "memory" : {
+                                                 "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
+                                                 "maximum" : 512,
+                                                 "minimum" : 4,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "type" : {
+                                                 "default" : "std",
+                                                 "default_key" : 1,
+                                                 "description" : "Select the VGA type.",
+                                                 "enum" : [
+                                                    "cirrus",
+                                                    "qxl",
+                                                    "qxl2",
+                                                    "qxl3",
+                                                    "qxl4",
+                                                    "none",
+                                                    "serial0",
+                                                    "serial1",
+                                                    "serial2",
+                                                    "serial3",
+                                                    "std",
+                                                    "virtio",
+                                                    "virtio-gl",
+                                                    "vmware"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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).",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "vmgenid" : {
+                                           "default" : "1 (autogenerated)",
+                                           "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
+                                           "format_description" : "UUID",
+                                           "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 through API/CLI create or update methods, but not when manually editing the config file."
+                                        },
+                                        "vmstatestorage" : {
+                                           "description" : "Default storage for VM state volumes/files.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "watchdog" : {
+                                           "description" : "Create a virtual hardware watchdog device.",
+                                           "format" : "pve-qm-watchdog",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Set virtual machine options (asynchrounous API).",
+                                  "method" : "POST",
+                                  "name" : "update_vm_async",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "acpi" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable ACPI.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "affinity" : {
+                                           "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                           "format" : "pve-cpuset",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "agent" : {
+                                           "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                           "format" : {
+                                              "enabled" : {
+                                                 "default" : 0,
+                                                 "default_key" : 1,
+                                                 "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                 "type" : "boolean"
+                                              },
+                                              "fstrim_cloned_disks" : {
+                                                 "default" : 0,
+                                                 "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>] [,type=<virtio|isa>]"
+                                        },
+                                        "arch" : {
+                                           "description" : "Virtual processor architecture. Defaults to the host.",
+                                           "enum" : [
+                                              "x86_64",
+                                              "aarch64"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "args" : {
+                                           "description" : "Arbitrary arguments passed to kvm.",
+                                           "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).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "background_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)"
+                                        },
+                                        "balloon" : {
+                                           "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "bios" : {
+                                           "default" : "seabios",
+                                           "description" : "Select BIOS implementation.",
+                                           "enum" : [
+                                              "seabios",
+                                              "ovmf"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "boot" : {
+                                           "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
+                                           "format" : "pve-qm-boot",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
+                                        },
+                                        "bootdisk" : {
+                                           "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+",
+                                           "type" : "string"
+                                        },
+                                        "cdrom" : {
+                                           "description" : "This is an alias for option -ide2",
+                                           "format" : "pve-qm-ide",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<volume>"
+                                        },
+                                        "cicustom" : {
+                                           "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
+                                           "format" : "pve-qm-cicustom",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
+                                        },
+                                        "cipassword" : {
+                                           "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "citype" : {
+                                           "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",
+                                              "opennebula"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ciuser" : {
+                                           "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "cores" : {
+                                           "default" : 1,
+                                           "description" : "The number of cores per socket.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "cpu" : {
+                                           "description" : "Emulated CPU type.",
+                                           "format" : "pve-vm-cpu-conf",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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,
+                                           "description" : "Limit of CPU usage.",
+                                           "maximum" : 128,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - 128)",
+                                           "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
+                                        },
+                                        "cpuunits" : {
+                                           "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                           "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
+                                           "maximum" : 262144,
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - 262144)",
+                                           "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."
+                                        },
+                                        "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 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>"
+                                        },
+                                        "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>"
+                                        },
+                                        "efidisk0" : {
+                                           "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "efitype" : {
+                                                 "default" : "2m",
+                                                 "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                 "enum" : [
+                                                    "2m",
+                                                    "4m"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "pre-enrolled-keys" : {
+                                                 "default" : 0,
+                                                 "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
+                                        },
+                                        "force" : {
+                                           "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
+                                           "optional" : 1,
+                                           "requires" : "delete",
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "freeze" : {
+                                           "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "hookscript" : {
+                                           "description" : "Script that will be executed during various steps in the vms lifetime.",
+                                           "format" : "pve-volume-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "hostpci[n]" : {
+                                           "description" : "Map host PCI devices into guest.",
+                                           "format" : "pve-qm-hostpci",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
+                                           "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
+                                           "format" : "pve-hotplug-features",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "hugepages" : {
+                                           "description" : "Enable/disable hugepages memory.",
+                                           "enum" : [
+                                              "any",
+                                              "2",
+                                              "1024"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ide[n]" : {
+                                           "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "model" : {
+                                                 "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "model",
+                                                 "maxLength" : 120,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
+                                           "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
+                                        },
+                                        "ivshmem" : {
+                                           "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
+                                           "format" : {
+                                              "name" : {
+                                                 "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
+                                                 "format_description" : "string",
+                                                 "optional" : 1,
+                                                 "pattern" : "[a-zA-Z0-9\\-]+",
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "The size of the file in MB.",
+                                                 "minimum" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
+                                           "enum" : [
+                                              "de",
+                                              "de-ch",
+                                              "da",
+                                              "en-gb",
+                                              "en-us",
+                                              "es",
+                                              "fi",
+                                              "fr",
+                                              "fr-be",
+                                              "fr-ca",
+                                              "fr-ch",
+                                              "hu",
+                                              "is",
+                                              "it",
+                                              "ja",
+                                              "lt",
+                                              "mk",
+                                              "nl",
+                                              "no",
+                                              "pl",
+                                              "pt",
+                                              "pt-br",
+                                              "sv",
+                                              "sl",
+                                              "tr"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "kvm" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable KVM hardware virtualization.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "localtime" : {
+                                           "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "lock" : {
+                                           "description" : "Lock/unlock the VM.",
+                                           "enum" : [
+                                              "backup",
+                                              "clone",
+                                              "create",
+                                              "migrate",
+                                              "rollback",
+                                              "snapshot",
+                                              "snapshot-delete",
+                                              "suspending",
+                                              "suspended"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "machine" : {
+                                           "description" : "Specifies the Qemu machine type.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "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" : {
+                                           "default" : 512,
+                                           "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (16 - N)"
+                                        },
+                                        "migrate_downtime" : {
+                                           "default" : 0.1,
+                                           "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "migrate_speed" : {
+                                           "default" : 0,
+                                           "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "name" : {
+                                           "description" : "Set a name for the VM. Only used on the configuration web interface.",
+                                           "format" : "dns-name",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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.",
+                                           "format" : "address-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "net[n]" : {
+                                           "description" : "Specify network devices.",
+                                           "format" : {
+                                              "bridge" : {
+                                                 "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" : "pve-bridge-id",
+                                                 "format_description" : "bridge",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "e1000" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82540em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82544gc" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82545em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000e" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "firewall" : {
+                                                 "description" : "Whether this interface should be protected by the firewall.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "i82551" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82557b" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82559er" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "link_down" : {
+                                                 "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "macaddr" : {
+                                                 "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
+                                                 "format" : "mac-addr",
+                                                 "format_description" : "XX:XX:XX:XX:XX:XX",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                              },
+                                              "model" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
+                                                 "enum" : [
+                                                    "e1000",
+                                                    "e1000-82540em",
+                                                    "e1000-82544gc",
+                                                    "e1000-82545em",
+                                                    "e1000e",
+                                                    "i82551",
+                                                    "i82557b",
+                                                    "i82559er",
+                                                    "ne2k_isa",
+                                                    "ne2k_pci",
+                                                    "pcnet",
+                                                    "rtl8139",
+                                                    "virtio",
+                                                    "vmxnet3"
+                                                 ],
+                                                 "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"
+                                              },
+                                              "ne2k_pci" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "pcnet" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of packet queues to be used on the device.",
+                                                 "maximum" : 64,
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "rate" : {
+                                                 "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "rtl8139" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "tag" : {
+                                                 "description" : "VLAN tag to apply to packets on this interface.",
+                                                 "maximum" : 4094,
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "trunks" : {
+                                                 "description" : "VLAN trunks to pass through this interface.",
+                                                 "format_description" : "vlanid[;vlanid...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "virtio" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "vmxnet3" : {
+                                                 "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "numa" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable NUMA.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "numa[n]" : {
+                                           "description" : "NUMA topology.",
+                                           "format" : {
+                                              "cpus" : {
+                                                 "description" : "CPUs accessing this NUMA node.",
+                                                 "format_description" : "id[-id];...",
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "hostnodes" : {
+                                                 "description" : "Host NUMA nodes to use.",
+                                                 "format_description" : "id[-id];...",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "memory" : {
+                                                 "description" : "Amount of memory this NUMA node provides.",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "policy" : {
+                                                 "description" : "NUMA allocation policy.",
+                                                 "enum" : [
+                                                    "preferred",
+                                                    "bind",
+                                                    "interleave"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
+                                        },
+                                        "onboot" : {
+                                           "default" : 0,
+                                           "description" : "Specifies whether a VM will be started during system bootup.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "ostype" : {
+                                           "description" : "Specify guest operating system.",
+                                           "enum" : [
+                                              "other",
+                                              "wxp",
+                                              "w2k",
+                                              "w2k3",
+                                              "w2k8",
+                                              "wvista",
+                                              "win7",
+                                              "win8",
+                                              "win10",
+                                              "win11",
+                                              "l24",
+                                              "l26",
+                                              "solaris"
+                                           ],
+                                           "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "protection" : {
+                                           "default" : 0,
+                                           "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "reboot" : {
+                                           "default" : 1,
+                                           "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "revert" : {
+                                           "description" : "Revert a pending change.",
+                                           "format" : "pve-configid-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "rng0" : {
+                                           "description" : "Configure a VirtIO-based Random Number Generator.",
+                                           "format" : {
+                                              "max_bytes" : {
+                                                 "default" : 1024,
+                                                 "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of queues.",
+                                                 "minimum" : 2,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "scsiblock" : {
+                                                 "default" : 0,
+                                                 "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
+                                           "description" : "SCSI controller model",
+                                           "enum" : [
+                                              "lsi",
+                                              "lsi53c810",
+                                              "virtio-scsi-pci",
+                                              "virtio-scsi-single",
+                                              "megasas",
+                                              "pvscsi"
+                                           ],
+                                           "optional" : 1,
+                                           "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.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "serial[n]" : {
+                                           "description" : "Create a serial device inside the VM (n is 0 to 3)",
+                                           "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "shares" : {
+                                           "default" : 1000,
+                                           "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
+                                           "maximum" : 50000,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - 50000)"
+                                        },
+                                        "skiplock" : {
+                                           "description" : "Ignore locks - only root is allowed to use this option.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "smbios1" : {
+                                           "description" : "Specify SMBIOS type 1 fields.",
+                                           "format" : "pve-qm-smbios1",
+                                           "maxLength" : 512,
+                                           "optional" : 1,
+                                           "type" : "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,
+                                           "description" : "The number of CPUs. Please use option -sockets instead.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "sockets" : {
+                                           "default" : 1,
+                                           "description" : "The number of CPU sockets.",
+                                           "minimum" : 1,
+                                           "optional" : 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",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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'.",
+                                           "optional" : 1,
+                                           "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
+                                           "type" : "string",
+                                           "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
+                                        },
+                                        "startup" : {
+                                           "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                                           "format" : "pve-startup-order",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                                        },
+                                        "tablet" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable the USB tablet device.",
+                                           "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 (`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,
+                                           "description" : "Enable/disable time drift fix.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "template" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable Template.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "tpmstate0" : {
+                                           "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "version" : {
+                                                 "default" : "v2.0",
+                                                 "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                 "enum" : [
+                                                    "v1.2",
+                                                    "v2.0"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                        },
+                                        "unused[n]" : {
+                                           "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                                           "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" : "[file=]<volume>"
+                                        },
+                                        "usb[n]" : {
+                                           "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
+                                           "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                                        },
+                                        "vcpus" : {
+                                           "default" : 0,
+                                           "description" : "Number of hotplugged vcpus.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vga" : {
+                                           "description" : "Configure the VGA hardware.",
+                                           "format" : {
+                                              "memory" : {
+                                                 "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
+                                                 "maximum" : 512,
+                                                 "minimum" : 4,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "type" : {
+                                                 "default" : "std",
+                                                 "default_key" : 1,
+                                                 "description" : "Select the VGA type.",
+                                                 "enum" : [
+                                                    "cirrus",
+                                                    "qxl",
+                                                    "qxl2",
+                                                    "qxl3",
+                                                    "qxl4",
+                                                    "none",
+                                                    "serial0",
+                                                    "serial1",
+                                                    "serial2",
+                                                    "serial3",
+                                                    "std",
+                                                    "virtio",
+                                                    "virtio-gl",
+                                                    "vmware"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                                           "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                                        },
+                                        "vmgenid" : {
+                                           "default" : "1 (autogenerated)",
+                                           "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
+                                           "format_description" : "UUID",
+                                           "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 through API/CLI create or update methods, but not when manually editing the config file."
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vmstatestorage" : {
+                                           "description" : "Default storage for VM state volumes/files.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "watchdog" : {
+                                           "description" : "Create a virtual hardware watchdog device.",
+                                           "format" : "pve-qm-watchdog",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
+                                           "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Config.Disk",
+                                           "VM.Config.CDROM",
+                                           "VM.Config.CPU",
+                                           "VM.Config.Memory",
+                                           "VM.Config.Network",
+                                           "VM.Config.HWType",
+                                           "VM.Config.Options",
+                                           "VM.Config.Cloudinit"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "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",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "acpi" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable ACPI.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "affinity" : {
+                                           "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                           "format" : "pve-cpuset",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "agent" : {
+                                           "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                           "format" : {
+                                              "enabled" : {
+                                                 "default" : 0,
+                                                 "default_key" : 1,
+                                                 "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                 "type" : "boolean"
+                                              },
+                                              "fstrim_cloned_disks" : {
+                                                 "default" : 0,
+                                                 "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>] [,type=<virtio|isa>]"
+                                        },
+                                        "arch" : {
+                                           "description" : "Virtual processor architecture. Defaults to the host.",
+                                           "enum" : [
+                                              "x86_64",
+                                              "aarch64"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "args" : {
+                                           "description" : "Arbitrary arguments passed to kvm.",
+                                           "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).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "balloon" : {
+                                           "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "bios" : {
+                                           "default" : "seabios",
+                                           "description" : "Select BIOS implementation.",
+                                           "enum" : [
+                                              "seabios",
+                                              "ovmf"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "boot" : {
+                                           "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
+                                           "format" : "pve-qm-boot",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
+                                        },
+                                        "bootdisk" : {
+                                           "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+",
+                                           "type" : "string"
+                                        },
+                                        "cdrom" : {
+                                           "description" : "This is an alias for option -ide2",
+                                           "format" : "pve-qm-ide",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<volume>"
+                                        },
+                                        "cicustom" : {
+                                           "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
+                                           "format" : "pve-qm-cicustom",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
+                                        },
+                                        "cipassword" : {
+                                           "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "citype" : {
+                                           "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",
+                                              "opennebula"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ciuser" : {
+                                           "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "cores" : {
+                                           "default" : 1,
+                                           "description" : "The number of cores per socket.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "cpu" : {
+                                           "description" : "Emulated CPU type.",
+                                           "format" : "pve-vm-cpu-conf",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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,
+                                           "description" : "Limit of CPU usage.",
+                                           "maximum" : 128,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - 128)",
+                                           "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
+                                        },
+                                        "cpuunits" : {
+                                           "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                           "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
+                                           "maximum" : 262144,
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - 262144)",
+                                           "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."
+                                        },
+                                        "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 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>"
+                                        },
+                                        "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>"
+                                        },
+                                        "efidisk0" : {
+                                           "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "efitype" : {
+                                                 "default" : "2m",
+                                                 "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                 "enum" : [
+                                                    "2m",
+                                                    "4m"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "pre-enrolled-keys" : {
+                                                 "default" : 0,
+                                                 "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
+                                        },
+                                        "force" : {
+                                           "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
+                                           "optional" : 1,
+                                           "requires" : "delete",
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "freeze" : {
+                                           "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "hookscript" : {
+                                           "description" : "Script that will be executed during various steps in the vms lifetime.",
+                                           "format" : "pve-volume-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "hostpci[n]" : {
+                                           "description" : "Map host PCI devices into guest.",
+                                           "format" : "pve-qm-hostpci",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
+                                           "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
+                                           "format" : "pve-hotplug-features",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "hugepages" : {
+                                           "description" : "Enable/disable hugepages memory.",
+                                           "enum" : [
+                                              "any",
+                                              "2",
+                                              "1024"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ide[n]" : {
+                                           "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "model" : {
+                                                 "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "model",
+                                                 "maxLength" : 120,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
+                                           "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
+                                        },
+                                        "ivshmem" : {
+                                           "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
+                                           "format" : {
+                                              "name" : {
+                                                 "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
+                                                 "format_description" : "string",
+                                                 "optional" : 1,
+                                                 "pattern" : "[a-zA-Z0-9\\-]+",
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "The size of the file in MB.",
+                                                 "minimum" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
+                                           "enum" : [
+                                              "de",
+                                              "de-ch",
+                                              "da",
+                                              "en-gb",
+                                              "en-us",
+                                              "es",
+                                              "fi",
+                                              "fr",
+                                              "fr-be",
+                                              "fr-ca",
+                                              "fr-ch",
+                                              "hu",
+                                              "is",
+                                              "it",
+                                              "ja",
+                                              "lt",
+                                              "mk",
+                                              "nl",
+                                              "no",
+                                              "pl",
+                                              "pt",
+                                              "pt-br",
+                                              "sv",
+                                              "sl",
+                                              "tr"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "kvm" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable KVM hardware virtualization.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "localtime" : {
+                                           "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "lock" : {
+                                           "description" : "Lock/unlock the VM.",
+                                           "enum" : [
+                                              "backup",
+                                              "clone",
+                                              "create",
+                                              "migrate",
+                                              "rollback",
+                                              "snapshot",
+                                              "snapshot-delete",
+                                              "suspending",
+                                              "suspended"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "machine" : {
+                                           "description" : "Specifies the Qemu machine type.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "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" : {
+                                           "default" : 512,
+                                           "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (16 - N)"
+                                        },
+                                        "migrate_downtime" : {
+                                           "default" : 0.1,
+                                           "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "migrate_speed" : {
+                                           "default" : 0,
+                                           "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "name" : {
+                                           "description" : "Set a name for the VM. Only used on the configuration web interface.",
+                                           "format" : "dns-name",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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.",
+                                           "format" : "address-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "net[n]" : {
+                                           "description" : "Specify network devices.",
+                                           "format" : {
+                                              "bridge" : {
+                                                 "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" : "pve-bridge-id",
+                                                 "format_description" : "bridge",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "e1000" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82540em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82544gc" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000-82545em" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "e1000e" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "firewall" : {
+                                                 "description" : "Whether this interface should be protected by the firewall.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "i82551" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82557b" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "i82559er" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "link_down" : {
+                                                 "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "macaddr" : {
+                                                 "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
+                                                 "format" : "mac-addr",
+                                                 "format_description" : "XX:XX:XX:XX:XX:XX",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                              },
+                                              "model" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
+                                                 "enum" : [
+                                                    "e1000",
+                                                    "e1000-82540em",
+                                                    "e1000-82544gc",
+                                                    "e1000-82545em",
+                                                    "e1000e",
+                                                    "i82551",
+                                                    "i82557b",
+                                                    "i82559er",
+                                                    "ne2k_isa",
+                                                    "ne2k_pci",
+                                                    "pcnet",
+                                                    "rtl8139",
+                                                    "virtio",
+                                                    "vmxnet3"
+                                                 ],
+                                                 "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"
+                                              },
+                                              "ne2k_pci" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "pcnet" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of packet queues to be used on the device.",
+                                                 "maximum" : 64,
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "rate" : {
+                                                 "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "rtl8139" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "tag" : {
+                                                 "description" : "VLAN tag to apply to packets on this interface.",
+                                                 "maximum" : 4094,
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "trunks" : {
+                                                 "description" : "VLAN trunks to pass through this interface.",
+                                                 "format_description" : "vlanid[;vlanid...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "virtio" : {
+                                                 "alias" : "macaddr",
+                                                 "keyAlias" : "model"
+                                              },
+                                              "vmxnet3" : {
+                                                 "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "numa" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable NUMA.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "numa[n]" : {
+                                           "description" : "NUMA topology.",
+                                           "format" : {
+                                              "cpus" : {
+                                                 "description" : "CPUs accessing this NUMA node.",
+                                                 "format_description" : "id[-id];...",
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "hostnodes" : {
+                                                 "description" : "Host NUMA nodes to use.",
+                                                 "format_description" : "id[-id];...",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                                 "type" : "string"
+                                              },
+                                              "memory" : {
+                                                 "description" : "Amount of memory this NUMA node provides.",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "policy" : {
+                                                 "description" : "NUMA allocation policy.",
+                                                 "enum" : [
+                                                    "preferred",
+                                                    "bind",
+                                                    "interleave"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
+                                        },
+                                        "onboot" : {
+                                           "default" : 0,
+                                           "description" : "Specifies whether a VM will be started during system bootup.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "ostype" : {
+                                           "description" : "Specify guest operating system.",
+                                           "enum" : [
+                                              "other",
+                                              "wxp",
+                                              "w2k",
+                                              "w2k3",
+                                              "w2k8",
+                                              "wvista",
+                                              "win7",
+                                              "win8",
+                                              "win10",
+                                              "win11",
+                                              "l24",
+                                              "l26",
+                                              "solaris"
+                                           ],
+                                           "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "protection" : {
+                                           "default" : 0,
+                                           "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "reboot" : {
+                                           "default" : 1,
+                                           "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "revert" : {
+                                           "description" : "Revert a pending change.",
+                                           "format" : "pve-configid-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "rng0" : {
+                                           "description" : "Configure a VirtIO-based Random Number Generator.",
+                                           "format" : {
+                                              "max_bytes" : {
+                                                 "default" : 1024,
+                                                 "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "queues" : {
+                                                 "description" : "Number of queues.",
+                                                 "minimum" : 2,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "scsiblock" : {
+                                                 "default" : 0,
+                                                 "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ssd" : {
+                                                 "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "wwn" : {
+                                                 "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                 "format_description" : "wwn",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
+                                           "description" : "SCSI controller model",
+                                           "enum" : [
+                                              "lsi",
+                                              "lsi53c810",
+                                              "virtio-scsi-pci",
+                                              "virtio-scsi-single",
+                                              "megasas",
+                                              "pvscsi"
+                                           ],
+                                           "optional" : 1,
+                                           "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.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "serial[n]" : {
+                                           "description" : "Create a serial device inside the VM (n is 0 to 3)",
+                                           "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                        },
+                                        "shares" : {
+                                           "default" : 1000,
+                                           "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
+                                           "maximum" : 50000,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - 50000)"
+                                        },
+                                        "skiplock" : {
+                                           "description" : "Ignore locks - only root is allowed to use this option.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "smbios1" : {
+                                           "description" : "Specify SMBIOS type 1 fields.",
+                                           "format" : "pve-qm-smbios1",
+                                           "maxLength" : 512,
+                                           "optional" : 1,
+                                           "type" : "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,
+                                           "description" : "The number of CPUs. Please use option -sockets instead.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "sockets" : {
+                                           "default" : 1,
+                                           "description" : "The number of CPU sockets.",
+                                           "minimum" : 1,
+                                           "optional" : 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",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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'.",
+                                           "optional" : 1,
+                                           "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
+                                           "type" : "string",
+                                           "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
+                                        },
+                                        "startup" : {
+                                           "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                                           "format" : "pve-startup-order",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                                        },
+                                        "tablet" : {
+                                           "default" : 1,
+                                           "description" : "Enable/disable the USB tablet device.",
+                                           "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 (`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,
+                                           "description" : "Enable/disable time drift fix.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "template" : {
+                                           "default" : 0,
+                                           "description" : "Enable/disable Template.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "tpmstate0" : {
+                                           "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "version" : {
+                                                 "default" : "v2.0",
+                                                 "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                 "enum" : [
+                                                    "v1.2",
+                                                    "v2.0"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                        },
+                                        "unused[n]" : {
+                                           "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                                           "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" : "[file=]<volume>"
+                                        },
+                                        "usb[n]" : {
+                                           "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
+                                           "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                                        },
+                                        "vcpus" : {
+                                           "default" : 0,
+                                           "description" : "Number of hotplugged vcpus.",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vga" : {
+                                           "description" : "Configure the VGA hardware.",
+                                           "format" : {
+                                              "memory" : {
+                                                 "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
+                                                 "maximum" : 512,
+                                                 "minimum" : 4,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "type" : {
+                                                 "default" : "std",
+                                                 "default_key" : 1,
+                                                 "description" : "Select the VGA type.",
+                                                 "enum" : [
+                                                    "cirrus",
+                                                    "qxl",
+                                                    "qxl2",
+                                                    "qxl3",
+                                                    "qxl4",
+                                                    "none",
+                                                    "serial0",
+                                                    "serial1",
+                                                    "serial2",
+                                                    "serial3",
+                                                    "std",
+                                                    "virtio",
+                                                    "virtio-gl",
+                                                    "vmware"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                                           "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                           "format" : {
+                                              "aio" : {
+                                                 "description" : "AIO type to use.",
+                                                 "enum" : [
+                                                    "native",
+                                                    "threads",
+                                                    "io_uring"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether the drive should be included when making backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "bps" : {
+                                                 "description" : "Maximum r/w speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd" : {
+                                                 "description" : "Maximum read speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_rd_length" : {
+                                                 "alias" : "bps_rd_max_length"
+                                              },
+                                              "bps_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr" : {
+                                                 "description" : "Maximum write speed in bytes per second.",
+                                                 "format_description" : "bps",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "bps_wr_length" : {
+                                                 "alias" : "bps_wr_max_length"
+                                              },
+                                              "bps_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "cache" : {
+                                                 "description" : "The drive's cache mode",
+                                                 "enum" : [
+                                                    "none",
+                                                    "writethrough",
+                                                    "writeback",
+                                                    "unsafe",
+                                                    "directsync"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "cyls" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "detect_zeroes" : {
+                                                 "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "discard" : {
+                                                 "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "on"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "file" : {
+                                                 "default_key" : 1,
+                                                 "description" : "The drive's backing volume.",
+                                                 "format" : "pve-volume-id-or-qm-path",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              },
+                                              "format" : {
+                                                 "description" : "The drive's backing file's data format.",
+                                                 "enum" : [
+                                                    "raw",
+                                                    "cow",
+                                                    "qcow",
+                                                    "qed",
+                                                    "qcow2",
+                                                    "vmdk",
+                                                    "cloop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "heads" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "import-from" : {
+                                                 "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                 "format" : "pve-volume-id-or-absolute-path",
+                                                 "format_description" : "source volume",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "iops" : {
+                                                 "description" : "Maximum r/w I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max" : {
+                                                 "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_max_length" : {
+                                                 "description" : "Maximum length of I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd" : {
+                                                 "description" : "Maximum read I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_length" : {
+                                                 "alias" : "iops_rd_max_length"
+                                              },
+                                              "iops_rd_max" : {
+                                                 "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_rd_max_length" : {
+                                                 "description" : "Maximum length of read I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr" : {
+                                                 "description" : "Maximum write I/O in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_length" : {
+                                                 "alias" : "iops_wr_max_length"
+                                              },
+                                              "iops_wr_max" : {
+                                                 "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                 "format_description" : "iops",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iops_wr_max_length" : {
+                                                 "description" : "Maximum length of write I/O bursts in seconds.",
+                                                 "format_description" : "seconds",
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "iothread" : {
+                                                 "description" : "Whether to use iothreads for this drive",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mbps" : {
+                                                 "description" : "Maximum r/w speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_max" : {
+                                                 "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd" : {
+                                                 "description" : "Maximum read speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_rd_max" : {
+                                                 "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr" : {
+                                                 "description" : "Maximum write speed in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "mbps_wr_max" : {
+                                                 "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "media" : {
+                                                 "default" : "disk",
+                                                 "description" : "The drive's media type.",
+                                                 "enum" : [
+                                                    "cdrom",
+                                                    "disk"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Whether the drive should considered for replication jobs.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "rerror" : {
+                                                 "description" : "Read error action.",
+                                                 "enum" : [
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Whether the drive is read-only.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "secs" : {
+                                                 "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "serial" : {
+                                                 "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                 "format" : "urlencoded",
+                                                 "format_description" : "serial",
+                                                 "maxLength" : 60,
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this locally-managed volume as available on all nodes",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Disk size. This is purely informational and has no effect.",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "snapshot" : {
+                                                 "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "trans" : {
+                                                 "description" : "Force disk geometry bios translation mode.",
+                                                 "enum" : [
+                                                    "none",
+                                                    "lba",
+                                                    "auto"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "alias" : "file"
+                                              },
+                                              "werror" : {
+                                                 "description" : "Write error action.",
+                                                 "enum" : [
+                                                    "enospc",
+                                                    "ignore",
+                                                    "report",
+                                                    "stop"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                                        },
+                                        "vmgenid" : {
+                                           "default" : "1 (autogenerated)",
+                                           "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
+                                           "format_description" : "UUID",
+                                           "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 through API/CLI create or update methods, but not when manually editing the config file."
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vmstatestorage" : {
+                                           "description" : "Default storage for VM state volumes/files.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "watchdog" : {
+                                           "description" : "Create a virtual hardware watchdog device.",
+                                           "format" : "pve-qm-watchdog",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
+                                           "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Config.Disk",
+                                           "VM.Config.CDROM",
+                                           "VM.Config.CPU",
+                                           "VM.Config.Memory",
+                                           "VM.Config.Network",
+                                           "VM.Config.HWType",
+                                           "VM.Config.Options",
+                                           "VM.Config.Cloudinit"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/config",
+                            "text" : "config"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get the virtual machine configuration with both current and pending values.",
+                                  "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. The value 2 indicates a force-delete request.",
+                                              "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}/qemu/{vmid}/pending",
+                            "text" : "pending"
+                         },
+                         {
+                            "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"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get the cloudinit configuration with both current and pending values.",
+                                  "method" : "GET",
+                                  "name" : "cloudinit_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" : {
+                                           "key" : {
+                                              "description" : "Configuration option name.",
+                                              "type" : "string"
+                                           },
+                                           "new" : {
+                                              "description" : "The new pending value.",
+                                              "optional" : 1,
+                                              "type" : "string"
+                                           },
+                                           "old" : {
+                                              "description" : "Value as it was used to generate the current cloudinit image.",
+                                              "optional" : 1,
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Regenerate and change cloudinit config drive.",
+                                  "method" : "PUT",
+                                  "name" : "cloudinit_update",
+                                  "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.Config.Cloudinit"
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/qemu/{vmid}/cloudinit",
+                            "text" : "cloudinit"
+                         },
+                         {
+                            "info" : {
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Unlink/delete disk images.",
+                                  "method" : "PUT",
+                                  "name" : "unlink",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "force" : {
+                                           "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "idlist" : {
+                                           "description" : "A list of disk IDs you want to delete.",
+                                           "format" : "pve-configid-list",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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.Config.Disk"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/unlink",
+                            "text" : "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",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "websocket" : {
+                                           "description" : "starts websockify instead of vncproxy",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cert" : {
+                                           "type" : "string"
+                                        },
+                                        "password" : {
+                                           "description" : "Returned if requested with 'generate-password' param. Consists of printable ASCII characters ('!' .. '~').",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "port" : {
+                                           "type" : "integer"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        },
+                                        "user" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/vncproxy",
+                            "text" : "vncproxy"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Creates a TCP proxy connections.",
+                                  "method" : "POST",
+                                  "name" : "termproxy",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "serial" : {
+                                           "description" : "opens a serial terminal (defaults to display)",
+                                           "enum" : [
+                                              "serial0",
+                                              "serial1",
+                                              "serial2",
+                                              "serial3"
+                                           ],
+                                           "optional" : 1,
+                                           "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.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "port" : {
+                                           "type" : "integer"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        },
+                                        "user" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/termproxy",
+                            "text" : "termproxy"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Opens a weksocket for VNC traffic.",
+                                  "method" : "GET",
+                                  "name" : "vncwebsocket",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "port" : {
+                                           "description" : "Port number returned by previous vncproxy call.",
+                                           "maximum" : 5999,
+                                           "minimum" : 5900,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (5900 - 5999)"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vncticket" : {
+                                           "description" : "Ticket from previous call to vncproxy.",
+                                           "maxLength" : 512,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Console"
+                                        ]
+                                     ],
+                                     "description" : "You also need to pass a valid ticket (vncticket)."
+                                  },
+                                  "returns" : {
+                                     "properties" : {
+                                        "port" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/vncwebsocket",
+                            "text" : "vncwebsocket"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Returns a SPICE configuration to connect to the VM.",
+                                  "method" : "POST",
+                                  "name" : "spiceproxy",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "proxy" : {
+                                           "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
+                                           "format" : "address",
+                                           "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.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "additionalProperties" : 1,
+                                     "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
+                                     "properties" : {
+                                        "host" : {
+                                           "type" : "string"
+                                        },
+                                        "password" : {
+                                           "type" : "string"
+                                        },
+                                        "proxy" : {
+                                           "type" : "string"
+                                        },
+                                        "tls-port" : {
+                                           "type" : "integer"
+                                        },
+                                        "type" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/spiceproxy",
+                            "text" : "spiceproxy"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Get virtual machine status.",
+                                        "method" : "GET",
+                                        "name" : "vm_status",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "properties" : {
+                                              "agent" : {
+                                                 "description" : "Qemu GuestAgent enabled in config.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "cpus" : {
+                                                 "description" : "Maximum usable CPUs.",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "ha" : {
+                                                 "description" : "HA manager service status.",
+                                                 "type" : "object"
+                                              },
+                                              "lock" : {
+                                                 "description" : "The current config lock, if any.",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "maxdisk" : {
+                                                 "description" : "Root disk size in bytes.",
+                                                 "optional" : 1,
+                                                 "renderer" : "bytes",
+                                                 "type" : "integer"
+                                              },
+                                              "maxmem" : {
+                                                 "description" : "Maximum memory in bytes.",
+                                                 "optional" : 1,
+                                                 "renderer" : "bytes",
+                                                 "type" : "integer"
+                                              },
+                                              "name" : {
+                                                 "description" : "VM name.",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "pid" : {
+                                                 "description" : "PID of running qemu process.",
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "qmpstatus" : {
+                                                 "description" : "Qemu QMP agent 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" : "boolean"
+                                              },
+                                              "status" : {
+                                                 "description" : "Qemu process status.",
+                                                 "enum" : [
+                                                    "stopped",
+                                                    "running"
+                                                 ],
+                                                 "type" : "string"
+                                              },
+                                              "tags" : {
+                                                 "description" : "The current configured tags, if any",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "uptime" : {
+                                                 "description" : "Uptime.",
+                                                 "optional" : 1,
+                                                 "renderer" : "duration",
+                                                 "type" : "integer"
+                                              },
+                                              "vmid" : {
+                                                 "description" : "The (unique) ID of the VM.",
+                                                 "format" : "pve-vmid",
+                                                 "minimum" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/status/current",
+                                  "text" : "current"
+                               },
+                               {
+                                  "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+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                                 "type" : "string"
+                                              },
+                                              "migratedfrom" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "migration_network" : {
+                                                 "description" : "CIDR of the (sub) network that is used for migration.",
+                                                 "format" : "CIDR",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "migration_type" : {
+                                                 "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
+                                                 "enum" : [
+                                                    "secure",
+                                                    "insecure"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "stateuri" : {
+                                                 "description" : "Some command save/restore state from this location.",
+                                                 "maxLength" : 128,
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "targetstorage" : {
+                                                 "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" : "storage-pair-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",
+                                                 "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/start",
+                                  "text" : "start"
+                               },
+                               {
+                                  "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",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "keepActive" : {
+                                                 "default" : 0,
+                                                 "description" : "Do not deactivate storage volumes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "migratedfrom" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "timeout" : {
+                                                 "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",
+                                                 "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/stop",
+                                  "text" : "stop"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Reset virtual machine.",
+                                        "method" : "POST",
+                                        "name" : "vm_reset",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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/reset",
+                                  "text" : "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",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "forceStop" : {
+                                                 "default" : 0,
+                                                 "description" : "Make sure the VM stops.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "keepActive" : {
+                                                 "default" : 0,
+                                                 "description" : "Do not deactivate storage volumes.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "timeout" : {
+                                                 "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",
+                                                 "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/shutdown",
+                                  "text" : "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",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "statestorage" : {
+                                                 "description" : "The storage for the VM state",
+                                                 "format" : "pve-storage-id",
+                                                 "optional" : 1,
+                                                 "requires" : "todisk",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "todisk" : {
+                                                 "default" : 0,
+                                                 "description" : "If set, suspends the VM to disk. Will be resumed on next VM start.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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"
+                                              ]
+                                           ],
+                                           "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",
+                                        "returns" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/status/suspend",
+                                  "text" : "suspend"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Resume virtual machine.",
+                                        "method" : "POST",
+                                        "name" : "vm_resume",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "nocheck" : {
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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/resume",
+                                  "text" : "resume"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Directory index",
+                                  "method" : "GET",
+                                  "name" : "vmcmdidx",
+                                  "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" : {
+                                     "user" : "all"
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "subdir" : {
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{subdir}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/qemu/{vmid}/status",
+                            "text" : "status"
+                         },
+                         {
+                            "info" : {
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Send key event to virtual machine.",
+                                  "method" : "PUT",
+                                  "name" : "vm_sendkey",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "key" : {
+                                           "description" : "The key (qemu monitor encoding).",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "skiplock" : {
+                                           "description" : "Ignore locks - only root is allowed to use this option.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "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.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/sendkey",
+                            "text" : "sendkey"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Check if feature for virtual machine is available.",
+                                  "method" : "GET",
+                                  "name" : "vm_feature",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "feature" : {
+                                           "description" : "Feature to check.",
+                                           "enum" : [
+                                              "snapshot",
+                                              "clone",
+                                              "copy"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "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.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "hasFeature" : {
+                                           "type" : "boolean"
+                                        },
+                                        "nodes" : {
+                                           "items" : {
+                                              "type" : "string"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/feature",
+                            "text" : "feature"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Create a copy of virtual machine/template.",
+                                  "method" : "POST",
+                                  "name" : "clone_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "clone limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "description" : {
+                                           "description" : "Description for the new VM.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "format" : {
+                                           "description" : "Target format for file storage. Only valid for full clone.",
+                                           "enum" : [
+                                              "raw",
+                                              "qcow2",
+                                              "vmdk"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "full" : {
+                                           "description" : "Create a full copy of all disks. This is always done when you clone a normal VM. For VM templates, we try to create a linked clone by default.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "name" : {
+                                           "description" : "Set a name for the new VM.",
+                                           "format" : "dns-name",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "newid" : {
+                                           "description" : "VMID for the clone.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "pool" : {
+                                           "description" : "Add the new VM to the specified pool.",
+                                           "format" : "pve-poolid",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "storage" : {
+                                           "description" : "Target storage for full clone.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target" : {
+                                           "description" : "Target node. Only allowed if the original VM is on shared storage.",
+                                           "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" : [
+                                        "and",
+                                        [
+                                           "perm",
+                                           "/vms/{vmid}",
+                                           [
+                                              "VM.Clone"
+                                           ]
+                                        ],
+                                        [
+                                           "or",
+                                           [
+                                              "perm",
+                                              "/vms/{newid}",
+                                              [
+                                                 "VM.Allocate"
+                                              ]
+                                           ],
+                                           [
+                                              "perm",
+                                              "/pool/{pool}",
+                                              [
+                                                 "VM.Allocate"
+                                              ],
+                                              "require_param",
+                                              "pool"
+                                           ]
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/clone",
+                            "text" : "clone"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Move volume to different storage or to a different VM.",
+                                  "method" : "POST",
+                                  "name" : "move_vm_disk",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "move limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "delete" : {
+                                           "default" : 0,
+                                           "description" : "Delete the original disk after successful copy. By default the original disk is kept as unused disk.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "digest" : {
+                                           "description" : "Prevent changes if current configuration file has different SHA1\"\n\t\t    .\" digest. This can be used to prevent concurrent modifications.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "disk" : {
+                                           "description" : "The disk you want to move.",
+                                           "enum" : [
+                                              "ide0",
+                                              "ide1",
+                                              "ide2",
+                                              "ide3",
+                                              "scsi0",
+                                              "scsi1",
+                                              "scsi2",
+                                              "scsi3",
+                                              "scsi4",
+                                              "scsi5",
+                                              "scsi6",
+                                              "scsi7",
+                                              "scsi8",
+                                              "scsi9",
+                                              "scsi10",
+                                              "scsi11",
+                                              "scsi12",
+                                              "scsi13",
+                                              "scsi14",
+                                              "scsi15",
+                                              "scsi16",
+                                              "scsi17",
+                                              "scsi18",
+                                              "scsi19",
+                                              "scsi20",
+                                              "scsi21",
+                                              "scsi22",
+                                              "scsi23",
+                                              "scsi24",
+                                              "scsi25",
+                                              "scsi26",
+                                              "scsi27",
+                                              "scsi28",
+                                              "scsi29",
+                                              "scsi30",
+                                              "virtio0",
+                                              "virtio1",
+                                              "virtio2",
+                                              "virtio3",
+                                              "virtio4",
+                                              "virtio5",
+                                              "virtio6",
+                                              "virtio7",
+                                              "virtio8",
+                                              "virtio9",
+                                              "virtio10",
+                                              "virtio11",
+                                              "virtio12",
+                                              "virtio13",
+                                              "virtio14",
+                                              "virtio15",
+                                              "sata0",
+                                              "sata1",
+                                              "sata2",
+                                              "sata3",
+                                              "sata4",
+                                              "sata5",
+                                              "efidisk0",
+                                              "tpmstate0",
+                                              "unused0",
+                                              "unused1",
+                                              "unused2",
+                                              "unused3",
+                                              "unused4",
+                                              "unused5",
+                                              "unused6",
+                                              "unused7",
+                                              "unused8",
+                                              "unused9",
+                                              "unused10",
+                                              "unused11",
+                                              "unused12",
+                                              "unused13",
+                                              "unused14",
+                                              "unused15",
+                                              "unused16",
+                                              "unused17",
+                                              "unused18",
+                                              "unused19",
+                                              "unused20",
+                                              "unused21",
+                                              "unused22",
+                                              "unused23",
+                                              "unused24",
+                                              "unused25",
+                                              "unused26",
+                                              "unused27",
+                                              "unused28",
+                                              "unused29",
+                                              "unused30",
+                                              "unused31",
+                                              "unused32",
+                                              "unused33",
+                                              "unused34",
+                                              "unused35",
+                                              "unused36",
+                                              "unused37",
+                                              "unused38",
+                                              "unused39",
+                                              "unused40",
+                                              "unused41",
+                                              "unused42",
+                                              "unused43",
+                                              "unused44",
+                                              "unused45",
+                                              "unused46",
+                                              "unused47",
+                                              "unused48",
+                                              "unused49",
+                                              "unused50",
+                                              "unused51",
+                                              "unused52",
+                                              "unused53",
+                                              "unused54",
+                                              "unused55",
+                                              "unused56",
+                                              "unused57",
+                                              "unused58",
+                                              "unused59",
+                                              "unused60",
+                                              "unused61",
+                                              "unused62",
+                                              "unused63",
+                                              "unused64",
+                                              "unused65",
+                                              "unused66",
+                                              "unused67",
+                                              "unused68",
+                                              "unused69",
+                                              "unused70",
+                                              "unused71",
+                                              "unused72",
+                                              "unused73",
+                                              "unused74",
+                                              "unused75",
+                                              "unused76",
+                                              "unused77",
+                                              "unused78",
+                                              "unused79",
+                                              "unused80",
+                                              "unused81",
+                                              "unused82",
+                                              "unused83",
+                                              "unused84",
+                                              "unused85",
+                                              "unused86",
+                                              "unused87",
+                                              "unused88",
+                                              "unused89",
+                                              "unused90",
+                                              "unused91",
+                                              "unused92",
+                                              "unused93",
+                                              "unused94",
+                                              "unused95",
+                                              "unused96",
+                                              "unused97",
+                                              "unused98",
+                                              "unused99",
+                                              "unused100",
+                                              "unused101",
+                                              "unused102",
+                                              "unused103",
+                                              "unused104",
+                                              "unused105",
+                                              "unused106",
+                                              "unused107",
+                                              "unused108",
+                                              "unused109",
+                                              "unused110",
+                                              "unused111",
+                                              "unused112",
+                                              "unused113",
+                                              "unused114",
+                                              "unused115",
+                                              "unused116",
+                                              "unused117",
+                                              "unused118",
+                                              "unused119",
+                                              "unused120",
+                                              "unused121",
+                                              "unused122",
+                                              "unused123",
+                                              "unused124",
+                                              "unused125",
+                                              "unused126",
+                                              "unused127",
+                                              "unused128",
+                                              "unused129",
+                                              "unused130",
+                                              "unused131",
+                                              "unused132",
+                                              "unused133",
+                                              "unused134",
+                                              "unused135",
+                                              "unused136",
+                                              "unused137",
+                                              "unused138",
+                                              "unused139",
+                                              "unused140",
+                                              "unused141",
+                                              "unused142",
+                                              "unused143",
+                                              "unused144",
+                                              "unused145",
+                                              "unused146",
+                                              "unused147",
+                                              "unused148",
+                                              "unused149",
+                                              "unused150",
+                                              "unused151",
+                                              "unused152",
+                                              "unused153",
+                                              "unused154",
+                                              "unused155",
+                                              "unused156",
+                                              "unused157",
+                                              "unused158",
+                                              "unused159",
+                                              "unused160",
+                                              "unused161",
+                                              "unused162",
+                                              "unused163",
+                                              "unused164",
+                                              "unused165",
+                                              "unused166",
+                                              "unused167",
+                                              "unused168",
+                                              "unused169",
+                                              "unused170",
+                                              "unused171",
+                                              "unused172",
+                                              "unused173",
+                                              "unused174",
+                                              "unused175",
+                                              "unused176",
+                                              "unused177",
+                                              "unused178",
+                                              "unused179",
+                                              "unused180",
+                                              "unused181",
+                                              "unused182",
+                                              "unused183",
+                                              "unused184",
+                                              "unused185",
+                                              "unused186",
+                                              "unused187",
+                                              "unused188",
+                                              "unused189",
+                                              "unused190",
+                                              "unused191",
+                                              "unused192",
+                                              "unused193",
+                                              "unused194",
+                                              "unused195",
+                                              "unused196",
+                                              "unused197",
+                                              "unused198",
+                                              "unused199",
+                                              "unused200",
+                                              "unused201",
+                                              "unused202",
+                                              "unused203",
+                                              "unused204",
+                                              "unused205",
+                                              "unused206",
+                                              "unused207",
+                                              "unused208",
+                                              "unused209",
+                                              "unused210",
+                                              "unused211",
+                                              "unused212",
+                                              "unused213",
+                                              "unused214",
+                                              "unused215",
+                                              "unused216",
+                                              "unused217",
+                                              "unused218",
+                                              "unused219",
+                                              "unused220",
+                                              "unused221",
+                                              "unused222",
+                                              "unused223",
+                                              "unused224",
+                                              "unused225",
+                                              "unused226",
+                                              "unused227",
+                                              "unused228",
+                                              "unused229",
+                                              "unused230",
+                                              "unused231",
+                                              "unused232",
+                                              "unused233",
+                                              "unused234",
+                                              "unused235",
+                                              "unused236",
+                                              "unused237",
+                                              "unused238",
+                                              "unused239",
+                                              "unused240",
+                                              "unused241",
+                                              "unused242",
+                                              "unused243",
+                                              "unused244",
+                                              "unused245",
+                                              "unused246",
+                                              "unused247",
+                                              "unused248",
+                                              "unused249",
+                                              "unused250",
+                                              "unused251",
+                                              "unused252",
+                                              "unused253",
+                                              "unused254",
+                                              "unused255"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "format" : {
+                                           "description" : "Target Format.",
+                                           "enum" : [
+                                              "raw",
+                                              "qcow2",
+                                              "vmdk"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "storage" : {
+                                           "description" : "Target storage.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-digest" : {
+                                           "description" : "Prevent changes if the current config file of the target VM has a\"\n\t\t    .\" different SHA1 digest. This can be used to detect concurrent modifications.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-disk" : {
+                                           "description" : "The config key the disk will be moved to on the target VM (for example, ide0 or scsi1). Default is the source disk key.",
+                                           "enum" : [
+                                              "ide0",
+                                              "ide1",
+                                              "ide2",
+                                              "ide3",
+                                              "scsi0",
+                                              "scsi1",
+                                              "scsi2",
+                                              "scsi3",
+                                              "scsi4",
+                                              "scsi5",
+                                              "scsi6",
+                                              "scsi7",
+                                              "scsi8",
+                                              "scsi9",
+                                              "scsi10",
+                                              "scsi11",
+                                              "scsi12",
+                                              "scsi13",
+                                              "scsi14",
+                                              "scsi15",
+                                              "scsi16",
+                                              "scsi17",
+                                              "scsi18",
+                                              "scsi19",
+                                              "scsi20",
+                                              "scsi21",
+                                              "scsi22",
+                                              "scsi23",
+                                              "scsi24",
+                                              "scsi25",
+                                              "scsi26",
+                                              "scsi27",
+                                              "scsi28",
+                                              "scsi29",
+                                              "scsi30",
+                                              "virtio0",
+                                              "virtio1",
+                                              "virtio2",
+                                              "virtio3",
+                                              "virtio4",
+                                              "virtio5",
+                                              "virtio6",
+                                              "virtio7",
+                                              "virtio8",
+                                              "virtio9",
+                                              "virtio10",
+                                              "virtio11",
+                                              "virtio12",
+                                              "virtio13",
+                                              "virtio14",
+                                              "virtio15",
+                                              "sata0",
+                                              "sata1",
+                                              "sata2",
+                                              "sata3",
+                                              "sata4",
+                                              "sata5",
+                                              "efidisk0",
+                                              "tpmstate0",
+                                              "unused0",
+                                              "unused1",
+                                              "unused2",
+                                              "unused3",
+                                              "unused4",
+                                              "unused5",
+                                              "unused6",
+                                              "unused7",
+                                              "unused8",
+                                              "unused9",
+                                              "unused10",
+                                              "unused11",
+                                              "unused12",
+                                              "unused13",
+                                              "unused14",
+                                              "unused15",
+                                              "unused16",
+                                              "unused17",
+                                              "unused18",
+                                              "unused19",
+                                              "unused20",
+                                              "unused21",
+                                              "unused22",
+                                              "unused23",
+                                              "unused24",
+                                              "unused25",
+                                              "unused26",
+                                              "unused27",
+                                              "unused28",
+                                              "unused29",
+                                              "unused30",
+                                              "unused31",
+                                              "unused32",
+                                              "unused33",
+                                              "unused34",
+                                              "unused35",
+                                              "unused36",
+                                              "unused37",
+                                              "unused38",
+                                              "unused39",
+                                              "unused40",
+                                              "unused41",
+                                              "unused42",
+                                              "unused43",
+                                              "unused44",
+                                              "unused45",
+                                              "unused46",
+                                              "unused47",
+                                              "unused48",
+                                              "unused49",
+                                              "unused50",
+                                              "unused51",
+                                              "unused52",
+                                              "unused53",
+                                              "unused54",
+                                              "unused55",
+                                              "unused56",
+                                              "unused57",
+                                              "unused58",
+                                              "unused59",
+                                              "unused60",
+                                              "unused61",
+                                              "unused62",
+                                              "unused63",
+                                              "unused64",
+                                              "unused65",
+                                              "unused66",
+                                              "unused67",
+                                              "unused68",
+                                              "unused69",
+                                              "unused70",
+                                              "unused71",
+                                              "unused72",
+                                              "unused73",
+                                              "unused74",
+                                              "unused75",
+                                              "unused76",
+                                              "unused77",
+                                              "unused78",
+                                              "unused79",
+                                              "unused80",
+                                              "unused81",
+                                              "unused82",
+                                              "unused83",
+                                              "unused84",
+                                              "unused85",
+                                              "unused86",
+                                              "unused87",
+                                              "unused88",
+                                              "unused89",
+                                              "unused90",
+                                              "unused91",
+                                              "unused92",
+                                              "unused93",
+                                              "unused94",
+                                              "unused95",
+                                              "unused96",
+                                              "unused97",
+                                              "unused98",
+                                              "unused99",
+                                              "unused100",
+                                              "unused101",
+                                              "unused102",
+                                              "unused103",
+                                              "unused104",
+                                              "unused105",
+                                              "unused106",
+                                              "unused107",
+                                              "unused108",
+                                              "unused109",
+                                              "unused110",
+                                              "unused111",
+                                              "unused112",
+                                              "unused113",
+                                              "unused114",
+                                              "unused115",
+                                              "unused116",
+                                              "unused117",
+                                              "unused118",
+                                              "unused119",
+                                              "unused120",
+                                              "unused121",
+                                              "unused122",
+                                              "unused123",
+                                              "unused124",
+                                              "unused125",
+                                              "unused126",
+                                              "unused127",
+                                              "unused128",
+                                              "unused129",
+                                              "unused130",
+                                              "unused131",
+                                              "unused132",
+                                              "unused133",
+                                              "unused134",
+                                              "unused135",
+                                              "unused136",
+                                              "unused137",
+                                              "unused138",
+                                              "unused139",
+                                              "unused140",
+                                              "unused141",
+                                              "unused142",
+                                              "unused143",
+                                              "unused144",
+                                              "unused145",
+                                              "unused146",
+                                              "unused147",
+                                              "unused148",
+                                              "unused149",
+                                              "unused150",
+                                              "unused151",
+                                              "unused152",
+                                              "unused153",
+                                              "unused154",
+                                              "unused155",
+                                              "unused156",
+                                              "unused157",
+                                              "unused158",
+                                              "unused159",
+                                              "unused160",
+                                              "unused161",
+                                              "unused162",
+                                              "unused163",
+                                              "unused164",
+                                              "unused165",
+                                              "unused166",
+                                              "unused167",
+                                              "unused168",
+                                              "unused169",
+                                              "unused170",
+                                              "unused171",
+                                              "unused172",
+                                              "unused173",
+                                              "unused174",
+                                              "unused175",
+                                              "unused176",
+                                              "unused177",
+                                              "unused178",
+                                              "unused179",
+                                              "unused180",
+                                              "unused181",
+                                              "unused182",
+                                              "unused183",
+                                              "unused184",
+                                              "unused185",
+                                              "unused186",
+                                              "unused187",
+                                              "unused188",
+                                              "unused189",
+                                              "unused190",
+                                              "unused191",
+                                              "unused192",
+                                              "unused193",
+                                              "unused194",
+                                              "unused195",
+                                              "unused196",
+                                              "unused197",
+                                              "unused198",
+                                              "unused199",
+                                              "unused200",
+                                              "unused201",
+                                              "unused202",
+                                              "unused203",
+                                              "unused204",
+                                              "unused205",
+                                              "unused206",
+                                              "unused207",
+                                              "unused208",
+                                              "unused209",
+                                              "unused210",
+                                              "unused211",
+                                              "unused212",
+                                              "unused213",
+                                              "unused214",
+                                              "unused215",
+                                              "unused216",
+                                              "unused217",
+                                              "unused218",
+                                              "unused219",
+                                              "unused220",
+                                              "unused221",
+                                              "unused222",
+                                              "unused223",
+                                              "unused224",
+                                              "unused225",
+                                              "unused226",
+                                              "unused227",
+                                              "unused228",
+                                              "unused229",
+                                              "unused230",
+                                              "unused231",
+                                              "unused232",
+                                              "unused233",
+                                              "unused234",
+                                              "unused235",
+                                              "unused236",
+                                              "unused237",
+                                              "unused238",
+                                              "unused239",
+                                              "unused240",
+                                              "unused241",
+                                              "unused242",
+                                              "unused243",
+                                              "unused244",
+                                              "unused245",
+                                              "unused246",
+                                              "unused247",
+                                              "unused248",
+                                              "unused249",
+                                              "unused250",
+                                              "unused251",
+                                              "unused252",
+                                              "unused253",
+                                              "unused254",
+                                              "unused255"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "target-vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - 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.Config.Disk"
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a disk to another VM, you need the permissions on the target VM as well."
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/move_disk",
+                            "text" : "move_disk"
+                         },
+                         {
+                            "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",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "migrate limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "force" : {
+                                           "description" : "Allow to migrate VMs which use local devices. Only root may use this option.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "migration_network" : {
+                                           "description" : "CIDR of the (sub) network that is used for migration.",
+                                           "format" : "CIDR",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "migration_type" : {
+                                           "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.",
+                                           "enum" : [
+                                              "secure",
+                                              "insecure"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "online" : {
+                                           "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "target" : {
+                                           "description" : "Target node.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "targetstorage" : {
+                                           "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" : "storage-pair-list",
+                                           "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)"
+                                        },
+                                        "with-local-disks" : {
+                                           "description" : "Enable live storage migration for local disk",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Migrate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/migrate",
+                            "text" : "migrate"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migrate virtual machine to a remote cluster. Creates a new migration task. EXPERIMENTAL feature!",
+                                  "method" : "POST",
+                                  "name" : "remote_migrate_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "migrate limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "delete" : {
+                                           "default" : 0,
+                                           "description" : "Delete the original VM and related data after successful migration. By default the original VM is kept on the source cluster in a stopped state.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "online" : {
+                                           "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "target-bridge" : {
+                                           "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
+                                           "format" : "bridge-pair-list",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-endpoint" : {
+                                           "description" : "Remote target endpoint",
+                                           "format" : "proxmox-remote",
+                                           "type" : "string",
+                                           "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                        },
+                                        "target-storage" : {
+                                           "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" : "storage-pair-list",
+                                           "optional" : 0,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - 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.Migrate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/remote_migrate",
+                            "text" : "remote_migrate"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Execute Qemu monitor commands.",
+                                  "method" : "POST",
+                                  "name" : "monitor",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "command" : {
+                                           "description" : "The monitor command.",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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.Monitor"
+                                        ]
+                                     ],
+                                     "description" : "Sys.Modify is required for (sub)commands which are not read-only ('info *' and 'help')"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/monitor",
+                            "text" : "monitor"
+                         },
+                         {
+                            "info" : {
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Extend volume size.",
+                                  "method" : "PUT",
+                                  "name" : "resize_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "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>"
+                                        },
+                                        "disk" : {
+                                           "description" : "The disk you want to resize.",
+                                           "enum" : [
+                                              "ide0",
+                                              "ide1",
+                                              "ide2",
+                                              "ide3",
+                                              "scsi0",
+                                              "scsi1",
+                                              "scsi2",
+                                              "scsi3",
+                                              "scsi4",
+                                              "scsi5",
+                                              "scsi6",
+                                              "scsi7",
+                                              "scsi8",
+                                              "scsi9",
+                                              "scsi10",
+                                              "scsi11",
+                                              "scsi12",
+                                              "scsi13",
+                                              "scsi14",
+                                              "scsi15",
+                                              "scsi16",
+                                              "scsi17",
+                                              "scsi18",
+                                              "scsi19",
+                                              "scsi20",
+                                              "scsi21",
+                                              "scsi22",
+                                              "scsi23",
+                                              "scsi24",
+                                              "scsi25",
+                                              "scsi26",
+                                              "scsi27",
+                                              "scsi28",
+                                              "scsi29",
+                                              "scsi30",
+                                              "virtio0",
+                                              "virtio1",
+                                              "virtio2",
+                                              "virtio3",
+                                              "virtio4",
+                                              "virtio5",
+                                              "virtio6",
+                                              "virtio7",
+                                              "virtio8",
+                                              "virtio9",
+                                              "virtio10",
+                                              "virtio11",
+                                              "virtio12",
+                                              "virtio13",
+                                              "virtio14",
+                                              "virtio15",
+                                              "sata0",
+                                              "sata1",
+                                              "sata2",
+                                              "sata3",
+                                              "sata4",
+                                              "sata5",
+                                              "efidisk0",
+                                              "tpmstate0"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "size" : {
+                                           "description" : "The new size. With the `+` sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.",
+                                           "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?",
+                                           "type" : "string"
+                                        },
+                                        "skiplock" : {
+                                           "description" : "Ignore locks - only root is allowed to use this option.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "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.Config.Disk"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/resize",
+                            "text" : "resize"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Get snapshot configuration",
+                                              "method" : "GET",
+                                              "name" : "get_snapshot_config",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "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.Snapshot",
+                                                       "VM.Snapshot.Rollback",
+                                                       "VM.Audit"
+                                                    ],
+                                                    "any",
+                                                    1
+                                                 ]
+                                              },
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Update snapshot metadata.",
+                                              "method" : "PUT",
+                                              "name" : "update_snapshot_config",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "description" : {
+                                                       "description" : "A textual description or comment.",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "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.Snapshot"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/config",
+                                        "text" : "config"
+                                     },
+                                     {
+                                        "info" : {
+                                           "POST" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Rollback VM state to specified snapshot.",
+                                              "method" : "POST",
+                                              "name" : "rollback",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "start" : {
+                                                       "default" : 0,
+                                                       "description" : "Whether the VM should get started after rolling back successfully",
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "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.Snapshot",
+                                                       "VM.Snapshot.Rollback"
+                                                    ],
+                                                    "any",
+                                                    1
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "description" : "the task ID.",
+                                                 "type" : "string"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/rollback",
+                                        "text" : "rollback"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "DELETE" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Delete a VM snapshot.",
+                                        "method" : "DELETE",
+                                        "name" : "delsnapshot",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "force" : {
+                                                 "description" : "For removal from config file, even if removing disk snapshots fails.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "snapname" : {
+                                                 "description" : "The name of the snapshot.",
+                                                 "format" : "pve-configid",
+                                                 "maxLength" : 40,
+                                                 "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.Snapshot"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "the task ID.",
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "",
+                                        "method" : "GET",
+                                        "name" : "snapshot_cmd_idx",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "snapname" : {
+                                                 "description" : "The name of the snapshot.",
+                                                 "format" : "pve-configid",
+                                                 "maxLength" : 40,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "vmid" : {
+                                                 "description" : "The (unique) ID of the VM.",
+                                                 "format" : "pve-vmid",
+                                                 "minimum" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (1 - N)"
+                                              }
+                                           }
+                                        },
+                                        "permissions" : {
+                                           "user" : "all"
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {},
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{cmd}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}",
+                                  "text" : "{snapname}"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "List all snapshots.",
+                                  "method" : "GET",
+                                  "name" : "snapshot_list",
+                                  "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "description" : {
+                                              "description" : "Snapshot description.",
+                                              "type" : "string"
+                                           },
+                                           "name" : {
+                                              "description" : "Snapshot identifier. Value 'current' identifies the current VM.",
+                                              "type" : "string"
+                                           },
+                                           "parent" : {
+                                              "description" : "Parent snapshot identifier.",
+                                              "optional" : 1,
+                                              "type" : "string"
+                                           },
+                                           "snaptime" : {
+                                              "description" : "Snapshot creation time",
+                                              "optional" : 1,
+                                              "renderer" : "timestamp",
+                                              "type" : "integer"
+                                           },
+                                           "vmstate" : {
+                                              "description" : "Snapshot includes RAM.",
+                                              "optional" : 1,
+                                              "type" : "boolean"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{name}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Snapshot a VM.",
+                                  "method" : "POST",
+                                  "name" : "snapshot",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "description" : {
+                                           "description" : "A textual description or comment.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vmstate" : {
+                                           "description" : "Save the vmstate",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Snapshot"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/qemu/{vmid}/snapshot",
+                            "text" : "snapshot"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Create a Template.",
+                                  "method" : "POST",
+                                  "name" : "template",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "disk" : {
+                                           "description" : "If you want to convert only 1 disk to base image.",
+                                           "enum" : [
+                                              "ide0",
+                                              "ide1",
+                                              "ide2",
+                                              "ide3",
+                                              "scsi0",
+                                              "scsi1",
+                                              "scsi2",
+                                              "scsi3",
+                                              "scsi4",
+                                              "scsi5",
+                                              "scsi6",
+                                              "scsi7",
+                                              "scsi8",
+                                              "scsi9",
+                                              "scsi10",
+                                              "scsi11",
+                                              "scsi12",
+                                              "scsi13",
+                                              "scsi14",
+                                              "scsi15",
+                                              "scsi16",
+                                              "scsi17",
+                                              "scsi18",
+                                              "scsi19",
+                                              "scsi20",
+                                              "scsi21",
+                                              "scsi22",
+                                              "scsi23",
+                                              "scsi24",
+                                              "scsi25",
+                                              "scsi26",
+                                              "scsi27",
+                                              "scsi28",
+                                              "scsi29",
+                                              "scsi30",
+                                              "virtio0",
+                                              "virtio1",
+                                              "virtio2",
+                                              "virtio3",
+                                              "virtio4",
+                                              "virtio5",
+                                              "virtio6",
+                                              "virtio7",
+                                              "virtio8",
+                                              "virtio9",
+                                              "virtio10",
+                                              "virtio11",
+                                              "virtio12",
+                                              "virtio13",
+                                              "virtio14",
+                                              "virtio15",
+                                              "sata0",
+                                              "sata1",
+                                              "sata2",
+                                              "sata3",
+                                              "sata4",
+                                              "sata5",
+                                              "efidisk0",
+                                              "tpmstate0"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "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.Allocate"
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/template",
+                            "text" : "template"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migration tunnel endpoint - only for internal use by VM migration.",
+                                  "method" : "POST",
+                                  "name" : "mtunnel",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bridges" : {
+                                           "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
+                                           "format" : "pve-bridge-id-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "storages" : {
+                                           "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
+                                           "format" : "pve-storage-id-list",
+                                           "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" : [
+                                        "and",
+                                        [
+                                           "perm",
+                                           "/vms/{vmid}",
+                                           [
+                                              "VM.Allocate"
+                                           ]
+                                        ],
+                                        [
+                                           "perm",
+                                           "/",
+                                           [
+                                              "Sys.Incoming"
+                                           ]
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "socket" : {
+                                           "type" : "string"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/mtunnel",
+                            "text" : "mtunnel"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
+                                  "method" : "GET",
+                                  "name" : "mtunnelwebsocket",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "socket" : {
+                                           "description" : "unix socket to forward to",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "ticket" : {
+                                           "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
+                                     "user" : "all"
+                                  },
+                                  "returns" : {
+                                     "properties" : {
+                                        "port" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "socket" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/qemu/{vmid}/mtunnelwebsocket",
+                            "text" : "mtunnelwebsocket"
+                         }
+                      ],
+                      "info" : {
+                         "DELETE" : {
+                            "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,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Directory index",
+                            "method" : "GET",
+                            "name" : "vmdiridx",
+                            "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" : {
+                               "user" : "all"
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "subdir" : {
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{subdir}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/qemu/{vmid}",
+                      "text" : "{vmid}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Virtual machine index (per node).",
+                      "method" : "GET",
+                      "name" : "vmlist",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "full" : {
+                               "description" : "Determine the full status of active VMs.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "Only list VMs where you have VM.Audit permissons on /vms/<vmid>.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "cpus" : {
+                                  "description" : "Maximum usable CPUs.",
+                                  "optional" : 1,
+                                  "type" : "number"
+                               },
+                               "lock" : {
+                                  "description" : "The current config lock, if any.",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "maxdisk" : {
+                                  "description" : "Root disk size in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "maxmem" : {
+                                  "description" : "Maximum memory in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "name" : {
+                                  "description" : "VM name.",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "pid" : {
+                                  "description" : "PID of running qemu process.",
+                                  "optional" : 1,
+                                  "type" : "integer"
+                               },
+                               "qmpstatus" : {
+                                  "description" : "Qemu QMP agent 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"
+                               },
+                               "status" : {
+                                  "description" : "Qemu process status.",
+                                  "enum" : [
+                                     "stopped",
+                                     "running"
+                                  ],
+                                  "type" : "string"
+                               },
+                               "tags" : {
+                                  "description" : "The current configured tags, if any",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "uptime" : {
+                                  "description" : "Uptime.",
+                                  "optional" : 1,
+                                  "renderer" : "duration",
+                                  "type" : "integer"
+                               },
+                               "vmid" : {
+                                  "description" : "The (unique) ID of the VM.",
+                                  "format" : "pve-vmid",
+                                  "minimum" : 1,
+                                  "type" : "integer"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{vmid}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create or restore a virtual machine.",
+                      "method" : "POST",
+                      "name" : "create_vm",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "acpi" : {
+                               "default" : 1,
+                               "description" : "Enable/disable ACPI.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "affinity" : {
+                               "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                               "format" : "pve-cpuset",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "agent" : {
+                               "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                               "format" : {
+                                  "enabled" : {
+                                     "default" : 0,
+                                     "default_key" : 1,
+                                     "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                     "type" : "boolean"
+                                  },
+                                  "fstrim_cloned_disks" : {
+                                     "default" : 0,
+                                     "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>] [,type=<virtio|isa>]"
+                            },
+                            "arch" : {
+                               "description" : "Virtual processor architecture. Defaults to the host.",
+                               "enum" : [
+                                  "x86_64",
+                                  "aarch64"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "archive" : {
+                               "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>"
+                            },
+                            "args" : {
+                               "description" : "Arbitrary arguments passed to kvm.",
+                               "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).",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "balloon" : {
+                               "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "bios" : {
+                               "default" : "seabios",
+                               "description" : "Select BIOS implementation.",
+                               "enum" : [
+                                  "seabios",
+                                  "ovmf"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "boot" : {
+                               "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
+                               "format" : "pve-qm-boot",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=<device[;device...]>]"
+                            },
+                            "bootdisk" : {
+                               "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+",
+                               "type" : "string"
+                            },
+                            "bwlimit" : {
+                               "default" : "restore limit from datacenter or storage config",
+                               "description" : "Override I/O bandwidth limit (in KiB/s).",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "cdrom" : {
+                               "description" : "This is an alias for option -ide2",
+                               "format" : "pve-qm-ide",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<volume>"
+                            },
+                            "cicustom" : {
+                               "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.",
+                               "format" : "pve-qm-cicustom",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
+                            },
+                            "cipassword" : {
+                               "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "citype" : {
+                               "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",
+                                  "opennebula"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "ciuser" : {
+                               "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "cores" : {
+                               "default" : 1,
+                               "description" : "The number of cores per socket.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "cpu" : {
+                               "description" : "Emulated CPU type.",
+                               "format" : "pve-vm-cpu-conf",
+                               "optional" : 1,
+                               "type" : "string",
+                               "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,
+                               "description" : "Limit of CPU usage.",
+                               "maximum" : 128,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "number",
+                               "typetext" : "<number> (0 - 128)",
+                               "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
+                            },
+                            "cpuunits" : {
+                               "default" : "cgroup v1: 1024, cgroup v2: 100",
+                               "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
+                               "maximum" : 262144,
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - 262144)",
+                               "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. 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. 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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "efitype" : {
+                                     "default" : "2m",
+                                     "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                     "enum" : [
+                                        "2m",
+                                        "4m"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "format" : {
+                                     "description" : "The drive's backing file's data format.",
+                                     "enum" : [
+                                        "raw",
+                                        "cow",
+                                        "qcow",
+                                        "qed",
+                                        "qcow2",
+                                        "vmdk",
+                                        "cloop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "pre-enrolled-keys" : {
+                                     "default" : 0,
+                                     "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
+                            },
+                            "force" : {
+                               "description" : "Allow to overwrite existing VM.",
+                               "optional" : 1,
+                               "requires" : "archive",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "freeze" : {
+                               "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "hookscript" : {
+                               "description" : "Script that will be executed during various steps in the vms lifetime.",
+                               "format" : "pve-volume-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "hostpci[n]" : {
+                               "description" : "Map host PCI devices into guest.",
+                               "format" : "pve-qm-hostpci",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,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",
+                               "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
+                               "format" : "pve-hotplug-features",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "hugepages" : {
+                               "description" : "Enable/disable hugepages memory.",
+                               "enum" : [
+                                  "any",
+                                  "2",
+                                  "1024"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "ide[n]" : {
+                               "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. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "aio" : {
+                                     "description" : "AIO type to use.",
+                                     "enum" : [
+                                        "native",
+                                        "threads",
+                                        "io_uring"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "backup" : {
+                                     "description" : "Whether the drive should be included when making backups.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "bps" : {
+                                     "description" : "Maximum r/w speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd" : {
+                                     "description" : "Maximum read speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd_length" : {
+                                     "alias" : "bps_rd_max_length"
+                                  },
+                                  "bps_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr" : {
+                                     "description" : "Maximum write speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr_length" : {
+                                     "alias" : "bps_wr_max_length"
+                                  },
+                                  "bps_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "cache" : {
+                                     "description" : "The drive's cache mode",
+                                     "enum" : [
+                                        "none",
+                                        "writethrough",
+                                        "writeback",
+                                        "unsafe",
+                                        "directsync"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "cyls" : {
+                                     "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "detect_zeroes" : {
+                                     "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "discard" : {
+                                     "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                     "enum" : [
+                                        "ignore",
+                                        "on"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "format" : {
+                                     "description" : "The drive's backing file's data format.",
+                                     "enum" : [
+                                        "raw",
+                                        "cow",
+                                        "qcow",
+                                        "qed",
+                                        "qcow2",
+                                        "vmdk",
+                                        "cloop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "heads" : {
+                                     "description" : "Force the drive's physical geometry to have a specific head count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "iops" : {
+                                     "description" : "Maximum r/w I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max" : {
+                                     "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd" : {
+                                     "description" : "Maximum read I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_length" : {
+                                     "alias" : "iops_rd_max_length"
+                                  },
+                                  "iops_rd_max" : {
+                                     "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr" : {
+                                     "description" : "Maximum write I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_length" : {
+                                     "alias" : "iops_wr_max_length"
+                                  },
+                                  "iops_wr_max" : {
+                                     "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "mbps" : {
+                                     "description" : "Maximum r/w speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_max" : {
+                                     "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd" : {
+                                     "description" : "Maximum read speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd_max" : {
+                                     "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr" : {
+                                     "description" : "Maximum write speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr_max" : {
+                                     "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "media" : {
+                                     "default" : "disk",
+                                     "description" : "The drive's media type.",
+                                     "enum" : [
+                                        "cdrom",
+                                        "disk"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "model" : {
+                                     "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.",
+                                     "format" : "urlencoded",
+                                     "format_description" : "model",
+                                     "maxLength" : 120,
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Whether the drive should considered for replication jobs.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "rerror" : {
+                                     "description" : "Read error action.",
+                                     "enum" : [
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "secs" : {
+                                     "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "serial" : {
+                                     "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                     "format" : "urlencoded",
+                                     "format_description" : "serial",
+                                     "maxLength" : 60,
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this locally-managed volume as available on all nodes",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "snapshot" : {
+                                     "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ssd" : {
+                                     "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "trans" : {
+                                     "description" : "Force disk geometry bios translation mode.",
+                                     "enum" : [
+                                        "none",
+                                        "lba",
+                                        "auto"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  },
+                                  "werror" : {
+                                     "description" : "Write error action.",
+                                     "enum" : [
+                                        "enospc",
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "wwn" : {
+                                     "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                     "format_description" : "wwn",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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\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",
+                               "typetext" : "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"
+                            },
+                            "ivshmem" : {
+                               "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.",
+                               "format" : {
+                                  "name" : {
+                                     "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.",
+                                     "format_description" : "string",
+                                     "optional" : 1,
+                                     "pattern" : "[a-zA-Z0-9\\-]+",
+                                     "type" : "string"
+                                  },
+                                  "size" : {
+                                     "description" : "The size of the file in MB.",
+                                     "minimum" : 1,
+                                     "type" : "integer"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "size=<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" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
+                               "enum" : [
+                                  "de",
+                                  "de-ch",
+                                  "da",
+                                  "en-gb",
+                                  "en-us",
+                                  "es",
+                                  "fi",
+                                  "fr",
+                                  "fr-be",
+                                  "fr-ca",
+                                  "fr-ch",
+                                  "hu",
+                                  "is",
+                                  "it",
+                                  "ja",
+                                  "lt",
+                                  "mk",
+                                  "nl",
+                                  "no",
+                                  "pl",
+                                  "pt",
+                                  "pt-br",
+                                  "sv",
+                                  "sl",
+                                  "tr"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "kvm" : {
+                               "default" : 1,
+                               "description" : "Enable/disable KVM hardware virtualization.",
+                               "optional" : 1,
+                               "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 (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "lock" : {
+                               "description" : "Lock/unlock the VM.",
+                               "enum" : [
+                                  "backup",
+                                  "clone",
+                                  "create",
+                                  "migrate",
+                                  "rollback",
+                                  "snapshot",
+                                  "snapshot-delete",
+                                  "suspending",
+                                  "suspended"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "machine" : {
+                               "description" : "Specifies the Qemu machine type.",
+                               "maxLength" : 40,
+                               "optional" : 1,
+                               "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" : {
+                               "default" : 512,
+                               "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                               "minimum" : 16,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (16 - N)"
+                            },
+                            "migrate_downtime" : {
+                               "default" : 0.1,
+                               "description" : "Set maximum tolerated downtime (in seconds) for migrations.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "number",
+                               "typetext" : "<number> (0 - N)"
+                            },
+                            "migrate_speed" : {
+                               "default" : 0,
+                               "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "name" : {
+                               "description" : "Set a name for the VM. Only used on the configuration web interface.",
+                               "format" : "dns-name",
+                               "optional" : 1,
+                               "type" : "string",
+                               "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.",
+                               "format" : "address-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "net[n]" : {
+                               "description" : "Specify network devices.",
+                               "format" : {
+                                  "bridge" : {
+                                     "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" : "pve-bridge-id",
+                                     "format_description" : "bridge",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "e1000" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "e1000-82540em" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "e1000-82544gc" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "e1000-82545em" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "e1000e" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "firewall" : {
+                                     "description" : "Whether this interface should be protected by the firewall.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "i82551" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "i82557b" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "i82559er" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "link_down" : {
+                                     "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "macaddr" : {
+                                     "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.",
+                                     "format" : "mac-addr",
+                                     "format_description" : "XX:XX:XX:XX:XX:XX",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                  },
+                                  "model" : {
+                                     "default_key" : 1,
+                                     "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
+                                     "enum" : [
+                                        "e1000",
+                                        "e1000-82540em",
+                                        "e1000-82544gc",
+                                        "e1000-82545em",
+                                        "e1000e",
+                                        "i82551",
+                                        "i82557b",
+                                        "i82559er",
+                                        "ne2k_isa",
+                                        "ne2k_pci",
+                                        "pcnet",
+                                        "rtl8139",
+                                        "virtio",
+                                        "vmxnet3"
+                                     ],
+                                     "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"
+                                  },
+                                  "ne2k_pci" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "pcnet" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "queues" : {
+                                     "description" : "Number of packet queues to be used on the device.",
+                                     "maximum" : 64,
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "rate" : {
+                                     "description" : "Rate limit in mbps (megabytes per second) as floating point number.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "rtl8139" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "tag" : {
+                                     "description" : "VLAN tag to apply to packets on this interface.",
+                                     "maximum" : 4094,
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "trunks" : {
+                                     "description" : "VLAN trunks to pass through this interface.",
+                                     "format_description" : "vlanid[;vlanid...]",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                     "type" : "string"
+                                  },
+                                  "virtio" : {
+                                     "alias" : "macaddr",
+                                     "keyAlias" : "model"
+                                  },
+                                  "vmxnet3" : {
+                                     "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>] [,mtu=<integer>] [,queues=<integer>] [,rate=<number>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,<model>=<macaddr>]"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "numa" : {
+                               "default" : 0,
+                               "description" : "Enable/disable NUMA.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "numa[n]" : {
+                               "description" : "NUMA topology.",
+                               "format" : {
+                                  "cpus" : {
+                                     "description" : "CPUs accessing this NUMA node.",
+                                     "format_description" : "id[-id];...",
+                                     "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                     "type" : "string"
+                                  },
+                                  "hostnodes" : {
+                                     "description" : "Host NUMA nodes to use.",
+                                     "format_description" : "id[-id];...",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)",
+                                     "type" : "string"
+                                  },
+                                  "memory" : {
+                                     "description" : "Amount of memory this NUMA node provides.",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "policy" : {
+                                     "description" : "NUMA allocation policy.",
+                                     "enum" : [
+                                        "preferred",
+                                        "bind",
+                                        "interleave"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "cpus=<id[-id];...> [,hostnodes=<id[-id];...>] [,memory=<number>] [,policy=<preferred|bind|interleave>]"
+                            },
+                            "onboot" : {
+                               "default" : 0,
+                               "description" : "Specifies whether a VM will be started during system bootup.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "ostype" : {
+                               "description" : "Specify guest operating system.",
+                               "enum" : [
+                                  "other",
+                                  "wxp",
+                                  "w2k",
+                                  "w2k3",
+                                  "w2k8",
+                                  "wvista",
+                                  "win7",
+                                  "win8",
+                                  "win10",
+                                  "win11",
+                                  "l24",
+                                  "l26",
+                                  "solaris"
+                               ],
+                               "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/2019\nwin11;; Microsoft Windows 11/2022\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\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                            },
+                            "pool" : {
+                               "description" : "Add the VM to the specified pool.",
+                               "format" : "pve-poolid",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "protection" : {
+                               "default" : 0,
+                               "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "reboot" : {
+                               "default" : 1,
+                               "description" : "Allow reboot. If set to '0' the VM exit on reboot.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "rng0" : {
+                               "description" : "Configure a VirtIO-based Random Number Generator.",
+                               "format" : {
+                                  "max_bytes" : {
+                                     "default" : 1024,
+                                     "description" : "Maximum bytes of entropy allowed to get 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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "aio" : {
+                                     "description" : "AIO type to use.",
+                                     "enum" : [
+                                        "native",
+                                        "threads",
+                                        "io_uring"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "backup" : {
+                                     "description" : "Whether the drive should be included when making backups.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "bps" : {
+                                     "description" : "Maximum r/w speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd" : {
+                                     "description" : "Maximum read speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd_length" : {
+                                     "alias" : "bps_rd_max_length"
+                                  },
+                                  "bps_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr" : {
+                                     "description" : "Maximum write speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr_length" : {
+                                     "alias" : "bps_wr_max_length"
+                                  },
+                                  "bps_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "cache" : {
+                                     "description" : "The drive's cache mode",
+                                     "enum" : [
+                                        "none",
+                                        "writethrough",
+                                        "writeback",
+                                        "unsafe",
+                                        "directsync"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "cyls" : {
+                                     "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "detect_zeroes" : {
+                                     "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "discard" : {
+                                     "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                     "enum" : [
+                                        "ignore",
+                                        "on"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "format" : {
+                                     "description" : "The drive's backing file's data format.",
+                                     "enum" : [
+                                        "raw",
+                                        "cow",
+                                        "qcow",
+                                        "qed",
+                                        "qcow2",
+                                        "vmdk",
+                                        "cloop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "heads" : {
+                                     "description" : "Force the drive's physical geometry to have a specific head count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "iops" : {
+                                     "description" : "Maximum r/w I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max" : {
+                                     "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd" : {
+                                     "description" : "Maximum read I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_length" : {
+                                     "alias" : "iops_rd_max_length"
+                                  },
+                                  "iops_rd_max" : {
+                                     "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr" : {
+                                     "description" : "Maximum write I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_length" : {
+                                     "alias" : "iops_wr_max_length"
+                                  },
+                                  "iops_wr_max" : {
+                                     "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "mbps" : {
+                                     "description" : "Maximum r/w speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_max" : {
+                                     "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd" : {
+                                     "description" : "Maximum read speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd_max" : {
+                                     "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr" : {
+                                     "description" : "Maximum write speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr_max" : {
+                                     "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "media" : {
+                                     "default" : "disk",
+                                     "description" : "The drive's media type.",
+                                     "enum" : [
+                                        "cdrom",
+                                        "disk"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Whether the drive should considered for replication jobs.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "rerror" : {
+                                     "description" : "Read error action.",
+                                     "enum" : [
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "secs" : {
+                                     "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "serial" : {
+                                     "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                     "format" : "urlencoded",
+                                     "format_description" : "serial",
+                                     "maxLength" : 60,
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this locally-managed volume as available on all nodes",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "snapshot" : {
+                                     "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ssd" : {
+                                     "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "trans" : {
+                                     "description" : "Force disk geometry bios translation mode.",
+                                     "enum" : [
+                                        "none",
+                                        "lba",
+                                        "auto"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  },
+                                  "werror" : {
+                                     "description" : "Write error action.",
+                                     "enum" : [
+                                        "enospc",
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "wwn" : {
+                                     "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                     "format_description" : "wwn",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "aio" : {
+                                     "description" : "AIO type to use.",
+                                     "enum" : [
+                                        "native",
+                                        "threads",
+                                        "io_uring"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "backup" : {
+                                     "description" : "Whether the drive should be included when making backups.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "bps" : {
+                                     "description" : "Maximum r/w speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd" : {
+                                     "description" : "Maximum read speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd_length" : {
+                                     "alias" : "bps_rd_max_length"
+                                  },
+                                  "bps_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr" : {
+                                     "description" : "Maximum write speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr_length" : {
+                                     "alias" : "bps_wr_max_length"
+                                  },
+                                  "bps_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "cache" : {
+                                     "description" : "The drive's cache mode",
+                                     "enum" : [
+                                        "none",
+                                        "writethrough",
+                                        "writeback",
+                                        "unsafe",
+                                        "directsync"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "cyls" : {
+                                     "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "detect_zeroes" : {
+                                     "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "discard" : {
+                                     "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                     "enum" : [
+                                        "ignore",
+                                        "on"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "format" : {
+                                     "description" : "The drive's backing file's data format.",
+                                     "enum" : [
+                                        "raw",
+                                        "cow",
+                                        "qcow",
+                                        "qed",
+                                        "qcow2",
+                                        "vmdk",
+                                        "cloop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "heads" : {
+                                     "description" : "Force the drive's physical geometry to have a specific head count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "iops" : {
+                                     "description" : "Maximum r/w I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max" : {
+                                     "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd" : {
+                                     "description" : "Maximum read I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_length" : {
+                                     "alias" : "iops_rd_max_length"
+                                  },
+                                  "iops_rd_max" : {
+                                     "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr" : {
+                                     "description" : "Maximum write I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_length" : {
+                                     "alias" : "iops_wr_max_length"
+                                  },
+                                  "iops_wr_max" : {
+                                     "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iothread" : {
+                                     "description" : "Whether to use iothreads for this drive",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "mbps" : {
+                                     "description" : "Maximum r/w speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_max" : {
+                                     "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd" : {
+                                     "description" : "Maximum read speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd_max" : {
+                                     "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr" : {
+                                     "description" : "Maximum write speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr_max" : {
+                                     "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "media" : {
+                                     "default" : "disk",
+                                     "description" : "The drive's media type.",
+                                     "enum" : [
+                                        "cdrom",
+                                        "disk"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "queues" : {
+                                     "description" : "Number of queues.",
+                                     "minimum" : 2,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Whether the drive should considered for replication jobs.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "rerror" : {
+                                     "description" : "Read error action.",
+                                     "enum" : [
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "ro" : {
+                                     "description" : "Whether the drive is read-only.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "scsiblock" : {
+                                     "default" : 0,
+                                     "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "secs" : {
+                                     "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "serial" : {
+                                     "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                     "format" : "urlencoded",
+                                     "format_description" : "serial",
+                                     "maxLength" : 60,
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this locally-managed volume as available on all nodes",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "snapshot" : {
+                                     "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ssd" : {
+                                     "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "trans" : {
+                                     "description" : "Force disk geometry bios translation mode.",
+                                     "enum" : [
+                                        "none",
+                                        "lba",
+                                        "auto"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  },
+                                  "werror" : {
+                                     "description" : "Write error action.",
+                                     "enum" : [
+                                        "enospc",
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "wwn" : {
+                                     "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                     "format_description" : "wwn",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[file=]<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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,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",
+                               "description" : "SCSI controller model",
+                               "enum" : [
+                                  "lsi",
+                                  "lsi53c810",
+                                  "virtio-scsi-pci",
+                                  "virtio-scsi-single",
+                                  "megasas",
+                                  "pvscsi"
+                               ],
+                               "optional" : 1,
+                               "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.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "serial[n]" : {
+                               "description" : "Create a serial device inside the VM (n is 0 to 3)",
+                               "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 -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                            },
+                            "shares" : {
+                               "default" : 1000,
+                               "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.",
+                               "maximum" : 50000,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 50000)"
+                            },
+                            "smbios1" : {
+                               "description" : "Specify SMBIOS type 1 fields.",
+                               "format" : "pve-qm-smbios1",
+                               "maxLength" : 512,
+                               "optional" : 1,
+                               "type" : "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,
+                               "description" : "The number of CPUs. Please use option -sockets instead.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "sockets" : {
+                               "default" : 1,
+                               "description" : "The number of CPU sockets.",
+                               "minimum" : 1,
+                               "optional" : 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",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "start" : {
+                               "default" : 0,
+                               "description" : "Start VM after it was created successfully.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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'.",
+                               "optional" : 1,
+                               "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)",
+                               "type" : "string",
+                               "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)"
+                            },
+                            "startup" : {
+                               "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                               "format" : "pve-startup-order",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                            },
+                            "storage" : {
+                               "description" : "Default storage.",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "tablet" : {
+                               "default" : 1,
+                               "description" : "Enable/disable the USB tablet device.",
+                               "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 (`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,
+                               "description" : "Enable/disable time drift fix.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "template" : {
+                               "default" : 0,
+                               "description" : "Enable/disable Template.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "tpmstate0" : {
+                               "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "version" : {
+                                     "default" : "v2.0",
+                                     "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                     "enum" : [
+                                        "v1.2",
+                                        "v2.0"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                            },
+                            "unique" : {
+                               "description" : "Assign a unique random ethernet address.",
+                               "optional" : 1,
+                               "requires" : "archive",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "unused[n]" : {
+                               "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                               "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" : "[file=]<volume>"
+                            },
+                            "usb[n]" : {
+                               "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
+                               "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\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. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                            },
+                            "vcpus" : {
+                               "default" : 0,
+                               "description" : "Number of hotplugged vcpus.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "vga" : {
+                               "description" : "Configure the VGA hardware.",
+                               "format" : {
+                                  "memory" : {
+                                     "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
+                                     "maximum" : 512,
+                                     "minimum" : 4,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "type" : {
+                                     "default" : "std",
+                                     "default_key" : 1,
+                                     "description" : "Select the VGA type.",
+                                     "enum" : [
+                                        "cirrus",
+                                        "qxl",
+                                        "qxl2",
+                                        "qxl3",
+                                        "qxl4",
+                                        "none",
+                                        "serial0",
+                                        "serial1",
+                                        "serial2",
+                                        "serial3",
+                                        "std",
+                                        "virtio",
+                                        "virtio-gl",
+                                        "vmware"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                               "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). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                               "format" : {
+                                  "aio" : {
+                                     "description" : "AIO type to use.",
+                                     "enum" : [
+                                        "native",
+                                        "threads",
+                                        "io_uring"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "backup" : {
+                                     "description" : "Whether the drive should be included when making backups.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "bps" : {
+                                     "description" : "Maximum r/w speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd" : {
+                                     "description" : "Maximum read speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_rd_length" : {
+                                     "alias" : "bps_rd_max_length"
+                                  },
+                                  "bps_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr" : {
+                                     "description" : "Maximum write speed in bytes per second.",
+                                     "format_description" : "bps",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "bps_wr_length" : {
+                                     "alias" : "bps_wr_max_length"
+                                  },
+                                  "bps_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "cache" : {
+                                     "description" : "The drive's cache mode",
+                                     "enum" : [
+                                        "none",
+                                        "writethrough",
+                                        "writeback",
+                                        "unsafe",
+                                        "directsync"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "cyls" : {
+                                     "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "detect_zeroes" : {
+                                     "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "discard" : {
+                                     "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                     "enum" : [
+                                        "ignore",
+                                        "on"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "file" : {
+                                     "default_key" : 1,
+                                     "description" : "The drive's backing volume.",
+                                     "format" : "pve-volume-id-or-qm-path",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  },
+                                  "format" : {
+                                     "description" : "The drive's backing file's data format.",
+                                     "enum" : [
+                                        "raw",
+                                        "cow",
+                                        "qcow",
+                                        "qed",
+                                        "qcow2",
+                                        "vmdk",
+                                        "cloop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "heads" : {
+                                     "description" : "Force the drive's physical geometry to have a specific head count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "import-from" : {
+                                     "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                     "format" : "pve-volume-id-or-absolute-path",
+                                     "format_description" : "source volume",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "iops" : {
+                                     "description" : "Maximum r/w I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max" : {
+                                     "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_max_length" : {
+                                     "description" : "Maximum length of I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd" : {
+                                     "description" : "Maximum read I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_length" : {
+                                     "alias" : "iops_rd_max_length"
+                                  },
+                                  "iops_rd_max" : {
+                                     "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_rd_max_length" : {
+                                     "description" : "Maximum length of read I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr" : {
+                                     "description" : "Maximum write I/O in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_length" : {
+                                     "alias" : "iops_wr_max_length"
+                                  },
+                                  "iops_wr_max" : {
+                                     "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                     "format_description" : "iops",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iops_wr_max_length" : {
+                                     "description" : "Maximum length of write I/O bursts in seconds.",
+                                     "format_description" : "seconds",
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "iothread" : {
+                                     "description" : "Whether to use iothreads for this drive",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "mbps" : {
+                                     "description" : "Maximum r/w speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_max" : {
+                                     "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd" : {
+                                     "description" : "Maximum read speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_rd_max" : {
+                                     "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr" : {
+                                     "description" : "Maximum write speed in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "mbps_wr_max" : {
+                                     "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "media" : {
+                                     "default" : "disk",
+                                     "description" : "The drive's media type.",
+                                     "enum" : [
+                                        "cdrom",
+                                        "disk"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Whether the drive should considered for replication jobs.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "rerror" : {
+                                     "description" : "Read error action.",
+                                     "enum" : [
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "ro" : {
+                                     "description" : "Whether the drive is read-only.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "secs" : {
+                                     "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "serial" : {
+                                     "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                     "format" : "urlencoded",
+                                     "format_description" : "serial",
+                                     "maxLength" : 60,
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this locally-managed volume as available on all nodes",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Disk size. This is purely informational and has no effect.",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "snapshot" : {
+                                     "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "trans" : {
+                                     "description" : "Force disk geometry bios translation mode.",
+                                     "enum" : [
+                                        "none",
+                                        "lba",
+                                        "auto"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "alias" : "file"
+                                  },
+                                  "werror" : {
+                                     "description" : "Write error action.",
+                                     "enum" : [
+                                        "enospc",
+                                        "ignore",
+                                        "report",
+                                        "stop"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "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>] [,import-from=<source volume>] [,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>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                            },
+                            "vmgenid" : {
+                               "default" : "1 (autogenerated)",
+                               "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.",
+                               "format_description" : "UUID",
+                               "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 through API/CLI create or update methods, but not when manually editing the config file."
+                            },
+                            "vmid" : {
+                               "description" : "The (unique) ID of the VM.",
+                               "format" : "pve-vmid",
+                               "minimum" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "vmstatestorage" : {
+                               "description" : "Default storage for VM state volumes/files.",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "watchdog" : {
+                               "description" : "Create a virtual hardware watchdog device.",
+                               "format" : "pve-qm-watchdog",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[[model=]<i6300esb|ib700>] [,action=<enum>]",
+                               "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/qemu",
+                "text" : "qemu"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "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",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapshot" : {
+                                           "description" : "Fetch config values from given snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "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.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "arch" : {
+                                           "default" : "amd64",
+                                           "description" : "OS architecture type.",
+                                           "enum" : [
+                                              "amd64",
+                                              "i386",
+                                              "arm64",
+                                              "armhf"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "cmode" : {
+                                           "default" : "tty",
+                                           "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
+                                           "enum" : [
+                                              "shell",
+                                              "console",
+                                              "tty"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "console" : {
+                                           "default" : 1,
+                                           "description" : "Attach a console device (/dev/console) to the container.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "cores" : {
+                                           "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
+                                           "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" : 8192,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number"
+                                        },
+                                        "cpuunits" : {
+                                           "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                           "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
+                                           "maximum" : 500000,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
+                                        },
+                                        "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" : "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"
+                                        },
+                                        "digest" : {
+                                           "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.",
+                                           "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"
+                                              },
+                                              "keyctl" : {
+                                                 "default" : 0,
+                                                 "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mknod" : {
+                                                 "default" : 0,
+                                                 "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mount" : {
+                                                 "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
+                                                 "format_description" : "fstype;fstype;...",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
+                                                 "type" : "string"
+                                              },
+                                              "nesting" : {
+                                                 "default" : 0,
+                                                 "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "hookscript" : {
+                                           "description" : "Script that will be exectued during various steps in the containers lifetime.",
+                                           "format" : "pve-volume-id",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "hostname" : {
+                                           "description" : "Set a host name for the container.",
+                                           "format" : "dns-name",
+                                           "maxLength" : 255,
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "lock" : {
+                                           "description" : "Lock/unlock the container.",
+                                           "enum" : [
+                                              "backup",
+                                              "create",
+                                              "destroyed",
+                                              "disk",
+                                              "fstrim",
+                                              "migrate",
+                                              "mounted",
+                                              "rollback",
+                                              "snapshot",
+                                              "snapshot-delete"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "lxc" : {
+                                           "description" : "Array of lxc low-level configurations ([[key1, value1], [key2, value2] ...]).",
+                                           "items" : {
+                                              "items" : {
+                                                 "type" : "string"
+                                              },
+                                              "type" : "array"
+                                           },
+                                           "optional" : 1,
+                                           "type" : "array"
+                                        },
+                                        "memory" : {
+                                           "default" : 512,
+                                           "description" : "Amount of RAM for the container in MB.",
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "mp[n]" : {
+                                           "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.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether to include the mount point in backups.",
+                                                 "optional" : 1,
+                                                 "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
+                                                 "format_description" : "Path",
+                                                 "type" : "string",
+                                                 "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
+                                              },
+                                              "quota" : {
+                                                 "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Will include this volume to a storage replica job.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Read-only mount point",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Volume size (read only value).",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Volume, device or directory to mount into the container.",
+                                                 "format" : "pve-lxc-mp-string",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "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" : "lxc-ip-with-ll-iface-list",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "net[n]" : {
+                                           "description" : "Specifies network interfaces for the container.",
+                                           "format" : {
+                                              "bridge" : {
+                                                 "description" : "Bridge to attach the network device to.",
+                                                 "format_description" : "bridge",
+                                                 "optional" : 1,
+                                                 "pattern" : "[-_.\\w\\d]+",
+                                                 "type" : "string"
+                                              },
+                                              "firewall" : {
+                                                 "description" : "Controls whether this interface's firewall rules should be used.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "gw" : {
+                                                 "description" : "Default gateway for IPv4 traffic.",
+                                                 "format" : "ipv4",
+                                                 "format_description" : "GatewayIPv4",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "gw6" : {
+                                                 "description" : "Default gateway for IPv6 traffic.",
+                                                 "format" : "ipv6",
+                                                 "format_description" : "GatewayIPv6",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "hwaddr" : {
+                                                 "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
+                                                 "format" : "mac-addr",
+                                                 "format_description" : "XX:XX:XX:XX:XX:XX",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                              },
+                                              "ip" : {
+                                                 "description" : "IPv4 address in CIDR format.",
+                                                 "format" : "pve-ipv4-config",
+                                                 "format_description" : "(IPv4/CIDR|dhcp|manual)",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ip6" : {
+                                                 "description" : "IPv6 address in CIDR format.",
+                                                 "format" : "pve-ipv6-config",
+                                                 "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "mtu" : {
+                                                 "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                                 "maximum" : 65535,
+                                                 "minimum" : 64,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "name" : {
+                                                 "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
+                                                 "format_description" : "string",
+                                                 "pattern" : "[-_.\\w\\d]+",
+                                                 "type" : "string"
+                                              },
+                                              "rate" : {
+                                                 "description" : "Apply rate limiting to the interface",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "tag" : {
+                                                 "description" : "VLAN tag for this interface.",
+                                                 "maximum" : 4094,
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "trunks" : {
+                                                 "description" : "VLAN ids to pass through the interface",
+                                                 "format_description" : "vlanid[;vlanid...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:;\\d+)*)",
+                                                 "type" : "string"
+                                              },
+                                              "type" : {
+                                                 "description" : "Network interface type.",
+                                                 "enum" : [
+                                                    "veth"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "onboot" : {
+                                           "default" : 0,
+                                           "description" : "Specifies whether a container will be started during system bootup.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "ostype" : {
+                                           "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",
+                                              "opensuse",
+                                              "archlinux",
+                                              "alpine",
+                                              "gentoo",
+                                              "nixos",
+                                              "unmanaged"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "protection" : {
+                                           "default" : 0,
+                                           "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "rootfs" : {
+                                           "description" : "Use volume as container root.",
+                                           "format" : {
+                                              "acl" : {
+                                                 "description" : "Explicitly enable or disable ACL support.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mountoptions" : {
+                                                 "description" : "Extra mount options for rootfs/mps.",
+                                                 "format_description" : "opt[;opt...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
+                                                 "type" : "string"
+                                              },
+                                              "quota" : {
+                                                 "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Will include this volume to a storage replica job.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Read-only mount point",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Volume size (read only value).",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Volume, device or directory to mount into the container.",
+                                                 "format" : "pve-lxc-mp-string",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "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.",
+                                           "format" : "dns-name-list",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "startup" : {
+                                           "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                                           "format" : "pve-startup-order",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                                        },
+                                        "swap" : {
+                                           "default" : 512,
+                                           "description" : "Amount of SWAP for the container in MB.",
+                                           "minimum" : 0,
+                                           "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",
+                                           "maximum" : 6,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "unprivileged" : {
+                                           "default" : 0,
+                                           "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
+                                           "optional" : 1,
+                                           "type" : "boolean"
+                                        },
+                                        "unused[n]" : {
+                                           "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                                           "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"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Set container options.",
+                                  "method" : "PUT",
+                                  "name" : "update_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "arch" : {
+                                           "default" : "amd64",
+                                           "description" : "OS architecture type.",
+                                           "enum" : [
+                                              "amd64",
+                                              "i386",
+                                              "arm64",
+                                              "armhf"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "cmode" : {
+                                           "default" : "tty",
+                                           "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
+                                           "enum" : [
+                                              "shell",
+                                              "console",
+                                              "tty"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "console" : {
+                                           "default" : 1,
+                                           "description" : "Attach a console device (/dev/console) to the container.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "cores" : {
+                                           "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
+                                           "maximum" : 8192,
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "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" : 8192,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - 8192)"
+                                        },
+                                        "cpuunits" : {
+                                           "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                           "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
+                                           "maximum" : 500000,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - 500000)",
+                                           "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
+                                        },
+                                        "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",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "description" : {
+                                           "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>"
+                                        },
+                                        "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>"
+                                        },
+                                        "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"
+                                              },
+                                              "keyctl" : {
+                                                 "default" : 0,
+                                                 "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mknod" : {
+                                                 "default" : 0,
+                                                 "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mount" : {
+                                                 "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
+                                                 "format_description" : "fstype;fstype;...",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
+                                                 "type" : "string"
+                                              },
+                                              "nesting" : {
+                                                 "default" : 0,
+                                                 "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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.",
+                                           "format" : "pve-volume-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "hostname" : {
+                                           "description" : "Set a host name for the container.",
+                                           "format" : "dns-name",
+                                           "maxLength" : 255,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "lock" : {
+                                           "description" : "Lock/unlock the container.",
+                                           "enum" : [
+                                              "backup",
+                                              "create",
+                                              "destroyed",
+                                              "disk",
+                                              "fstrim",
+                                              "migrate",
+                                              "mounted",
+                                              "rollback",
+                                              "snapshot",
+                                              "snapshot-delete"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "memory" : {
+                                           "default" : 512,
+                                           "description" : "Amount of RAM for the container in MB.",
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (16 - N)"
+                                        },
+                                        "mp[n]" : {
+                                           "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.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "backup" : {
+                                                 "description" : "Whether to include the mount point in backups.",
+                                                 "optional" : 1,
+                                                 "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
+                                                 "format_description" : "Path",
+                                                 "type" : "string",
+                                                 "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
+                                              },
+                                              "quota" : {
+                                                 "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Will include this volume to a storage replica job.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Read-only mount point",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Volume size (read only value).",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Volume, device or directory to mount into the container.",
+                                                 "format" : "pve-lxc-mp-string",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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" : "lxc-ip-with-ll-iface-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "net[n]" : {
+                                           "description" : "Specifies network interfaces for the container.",
+                                           "format" : {
+                                              "bridge" : {
+                                                 "description" : "Bridge to attach the network device to.",
+                                                 "format_description" : "bridge",
+                                                 "optional" : 1,
+                                                 "pattern" : "[-_.\\w\\d]+",
+                                                 "type" : "string"
+                                              },
+                                              "firewall" : {
+                                                 "description" : "Controls whether this interface's firewall rules should be used.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "gw" : {
+                                                 "description" : "Default gateway for IPv4 traffic.",
+                                                 "format" : "ipv4",
+                                                 "format_description" : "GatewayIPv4",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "gw6" : {
+                                                 "description" : "Default gateway for IPv6 traffic.",
+                                                 "format" : "ipv6",
+                                                 "format_description" : "GatewayIPv6",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "hwaddr" : {
+                                                 "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
+                                                 "format" : "mac-addr",
+                                                 "format_description" : "XX:XX:XX:XX:XX:XX",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                              },
+                                              "ip" : {
+                                                 "description" : "IPv4 address in CIDR format.",
+                                                 "format" : "pve-ipv4-config",
+                                                 "format_description" : "(IPv4/CIDR|dhcp|manual)",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "ip6" : {
+                                                 "description" : "IPv6 address in CIDR format.",
+                                                 "format" : "pve-ipv6-config",
+                                                 "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "mtu" : {
+                                                 "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                                 "maximum" : 65535,
+                                                 "minimum" : 64,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "name" : {
+                                                 "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
+                                                 "format_description" : "string",
+                                                 "pattern" : "[-_.\\w\\d]+",
+                                                 "type" : "string"
+                                              },
+                                              "rate" : {
+                                                 "description" : "Apply rate limiting to the interface",
+                                                 "format_description" : "mbps",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "tag" : {
+                                                 "description" : "VLAN tag for this interface.",
+                                                 "maximum" : 4094,
+                                                 "minimum" : 1,
+                                                 "optional" : 1,
+                                                 "type" : "integer"
+                                              },
+                                              "trunks" : {
+                                                 "description" : "VLAN ids to pass through the interface",
+                                                 "format_description" : "vlanid[;vlanid...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:\\d+(?:;\\d+)*)",
+                                                 "type" : "string"
+                                              },
+                                              "type" : {
+                                                 "description" : "Network interface type.",
+                                                 "enum" : [
+                                                    "veth"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "onboot" : {
+                                           "default" : 0,
+                                           "description" : "Specifies whether a container will be started during system bootup.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "ostype" : {
+                                           "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",
+                                              "opensuse",
+                                              "archlinux",
+                                              "alpine",
+                                              "gentoo",
+                                              "nixos",
+                                              "unmanaged"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "protection" : {
+                                           "default" : 0,
+                                           "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
+                                           "optional" : 1,
+                                           "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" : {
+                                              "acl" : {
+                                                 "description" : "Explicitly enable or disable ACL support.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "mountoptions" : {
+                                                 "description" : "Extra mount options for rootfs/mps.",
+                                                 "format_description" : "opt[;opt...]",
+                                                 "optional" : 1,
+                                                 "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
+                                                 "type" : "string"
+                                              },
+                                              "quota" : {
+                                                 "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "replicate" : {
+                                                 "default" : 1,
+                                                 "description" : "Will include this volume to a storage replica job.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ro" : {
+                                                 "description" : "Read-only mount point",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "shared" : {
+                                                 "default" : 0,
+                                                 "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                              },
+                                              "size" : {
+                                                 "description" : "Volume size (read only value).",
+                                                 "format" : "disk-size",
+                                                 "format_description" : "DiskSize",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "volume" : {
+                                                 "default_key" : 1,
+                                                 "description" : "Volume, device or directory to mount into the container.",
+                                                 "format" : "pve-lxc-mp-string",
+                                                 "format_description" : "volume",
+                                                 "type" : "string"
+                                              }
+                                           },
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "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.",
+                                           "format" : "dns-name-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "startup" : {
+                                           "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                                           "format" : "pve-startup-order",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                                        },
+                                        "swap" : {
+                                           "default" : 512,
+                                           "description" : "Amount of SWAP for the container in MB.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "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.",
+                                           "optional" : 1,
+                                           "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",
+                                           "maximum" : 6,
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - 6)"
+                                        },
+                                        "unprivileged" : {
+                                           "default" : 0,
+                                           "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "unused[n]" : {
+                                           "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                                           "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" : "[volume=]<volume>"
+                                        },
+                                        "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.Config.Disk",
+                                           "VM.Config.CPU",
+                                           "VM.Config.Memory",
+                                           "VM.Config.Network",
+                                           "VM.Config.Options"
+                                        ],
+                                        "any",
+                                        1
+                                     ],
+                                     "description" : "non-volume mount points in rootfs and mp[n] are restricted to root at pam"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/config",
+                            "text" : "config"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Get virtual machine status.",
+                                        "method" : "GET",
+                                        "name" : "vm_status",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "properties" : {
+                                              "cpus" : {
+                                                 "description" : "Maximum usable CPUs.",
+                                                 "optional" : 1,
+                                                 "type" : "number"
+                                              },
+                                              "ha" : {
+                                                 "description" : "HA manager service status.",
+                                                 "type" : "object"
+                                              },
+                                              "lock" : {
+                                                 "description" : "The current config lock, if any.",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "maxdisk" : {
+                                                 "description" : "Root disk size in bytes.",
+                                                 "optional" : 1,
+                                                 "renderer" : "bytes",
+                                                 "type" : "integer"
+                                              },
+                                              "maxmem" : {
+                                                 "description" : "Maximum memory in bytes.",
+                                                 "optional" : 1,
+                                                 "renderer" : "bytes",
+                                                 "type" : "integer"
+                                              },
+                                              "maxswap" : {
+                                                 "description" : "Maximum SWAP memory in bytes.",
+                                                 "optional" : 1,
+                                                 "renderer" : "bytes",
+                                                 "type" : "integer"
+                                              },
+                                              "name" : {
+                                                 "description" : "Container name.",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "status" : {
+                                                 "description" : "LXC Container status.",
+                                                 "enum" : [
+                                                    "stopped",
+                                                    "running"
+                                                 ],
+                                                 "type" : "string"
+                                              },
+                                              "tags" : {
+                                                 "description" : "The current configured tags, if any.",
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "uptime" : {
+                                                 "description" : "Uptime.",
+                                                 "optional" : 1,
+                                                 "renderer" : "duration",
+                                                 "type" : "integer"
+                                              },
+                                              "vmid" : {
+                                                 "description" : "The (unique) ID of the VM.",
+                                                 "format" : "pve-vmid",
+                                                 "minimum" : 1,
+                                                 "type" : "integer"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/status/current",
+                                  "text" : "current"
+                               },
+                               {
+                                  "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",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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/start",
+                                  "text" : "start"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Stop the container. This will abruptly stop all processes running in the container.",
+                                        "method" : "POST",
+                                        "name" : "vm_stop",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "skiplock" : {
+                                                 "description" : "Ignore locks - only root is allowed to use this option.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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/stop",
+                                  "text" : "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",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "forceStop" : {
+                                                 "default" : 0,
+                                                 "description" : "Make sure the Container stops.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "timeout" : {
+                                                 "default" : 60,
+                                                 "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",
+                                                 "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/shutdown",
+                                  "text" : "shutdown"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Suspend the container. This is experimental.",
+                                        "method" : "POST",
+                                        "name" : "vm_suspend",
+                                        "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.PowerMgmt"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/status/suspend",
+                                  "text" : "suspend"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Resume the container.",
+                                        "method" : "POST",
+                                        "name" : "vm_resume",
+                                        "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.PowerMgmt"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "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",
+                                  "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" : {
+                                     "user" : "all"
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "subdir" : {
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{subdir}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/lxc/{vmid}/status",
+                            "text" : "status"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "POST" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Rollback LXC state to specified snapshot.",
+                                              "method" : "POST",
+                                              "name" : "rollback",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "start" : {
+                                                       "default" : 0,
+                                                       "description" : "Whether the container should get started after rolling back successfully",
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "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.Snapshot",
+                                                       "VM.Snapshot.Rollback"
+                                                    ],
+                                                    "any",
+                                                    1
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "description" : "the task ID.",
+                                                 "type" : "string"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/rollback",
+                                        "text" : "rollback"
+                                     },
+                                     {
+                                        "info" : {
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Get snapshot configuration",
+                                              "method" : "GET",
+                                              "name" : "get_snapshot_config",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "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.Snapshot",
+                                                       "VM.Snapshot.Rollback",
+                                                       "VM.Audit"
+                                                    ],
+                                                    "any",
+                                                    1
+                                                 ]
+                                              },
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Update snapshot metadata.",
+                                              "method" : "PUT",
+                                              "name" : "update_snapshot_config",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "description" : {
+                                                       "description" : "A textual description or comment.",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "snapname" : {
+                                                       "description" : "The name of the snapshot.",
+                                                       "format" : "pve-configid",
+                                                       "maxLength" : 40,
+                                                       "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.Snapshot"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : "node",
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/config",
+                                        "text" : "config"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "DELETE" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Delete a LXC snapshot.",
+                                        "method" : "DELETE",
+                                        "name" : "delsnapshot",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "force" : {
+                                                 "description" : "For removal from config file, even if removing disk snapshots fails.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "snapname" : {
+                                                 "description" : "The name of the snapshot.",
+                                                 "format" : "pve-configid",
+                                                 "maxLength" : 40,
+                                                 "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.Snapshot"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "description" : "the task ID.",
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "",
+                                        "method" : "GET",
+                                        "name" : "snapshot_cmd_idx",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "snapname" : {
+                                                 "description" : "The name of the snapshot.",
+                                                 "format" : "pve-configid",
+                                                 "maxLength" : 40,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "vmid" : {
+                                                 "description" : "The (unique) ID of the VM.",
+                                                 "format" : "pve-vmid",
+                                                 "minimum" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (1 - N)"
+                                              }
+                                           }
+                                        },
+                                        "permissions" : {
+                                           "user" : "all"
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {},
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{cmd}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}",
+                                  "text" : "{snapname}"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "List all snapshots.",
+                                  "method" : "GET",
+                                  "name" : "list",
+                                  "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "description" : {
+                                              "description" : "Snapshot description.",
+                                              "type" : "string"
+                                           },
+                                           "name" : {
+                                              "description" : "Snapshot identifier. Value 'current' identifies the current VM.",
+                                              "type" : "string"
+                                           },
+                                           "parent" : {
+                                              "description" : "Parent snapshot identifier.",
+                                              "optional" : 1,
+                                              "type" : "string"
+                                           },
+                                           "snaptime" : {
+                                              "description" : "Snapshot creation time",
+                                              "optional" : 1,
+                                              "renderer" : "timestamp",
+                                              "type" : "integer"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{name}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Snapshot a container.",
+                                  "method" : "POST",
+                                  "name" : "snapshot",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "description" : {
+                                           "description" : "A textual description or comment.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "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.Snapshot"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/lxc/{vmid}/snapshot",
+                            "text" : "snapshot"
+                         },
+                         {
+                            "children" : [
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Delete rule.",
+                                              "method" : "DELETE",
+                                              "name" : "delete_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "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>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Get single rule data.",
+                                              "method" : "GET",
+                                              "name" : "get_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "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.Audit"
+                                                    ]
+                                                 ]
+                                              },
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "properties" : {
+                                                    "action" : {
+                                                       "type" : "string"
+                                                    },
+                                                    "comment" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "dest" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "dport" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "enable" : {
+                                                       "optional" : 1,
+                                                       "type" : "integer"
+                                                    },
+                                                    "icmp-type" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "iface" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "ipversion" : {
+                                                       "optional" : 1,
+                                                       "type" : "integer"
+                                                    },
+                                                    "log" : {
+                                                       "description" : "Log level for firewall rule",
+                                                       "enum" : [
+                                                          "emerg",
+                                                          "alert",
+                                                          "crit",
+                                                          "err",
+                                                          "warning",
+                                                          "notice",
+                                                          "info",
+                                                          "debug",
+                                                          "nolog"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "macro" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "pos" : {
+                                                       "type" : "integer"
+                                                    },
+                                                    "proto" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "source" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "sport" : {
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "type" : {
+                                                       "type" : "string"
+                                                    }
+                                                 },
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Modify rule data.",
+                                              "method" : "PUT",
+                                              "name" : "update_rule",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "action" : {
+                                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                                       "maxLength" : 20,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "comment" : {
+                                                       "description" : "Descriptive comment.",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "delete" : {
+                                                       "description" : "A list of settings you want to delete.",
+                                                       "format" : "pve-configid-list",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "dport" : {
+                                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                       "format" : "pve-fw-dport-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "enable" : {
+                                                       "description" : "Flag to enable/disable a rule.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "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",
+                                                       "maxLength" : 20,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "log" : {
+                                                       "description" : "Log level for firewall rule.",
+                                                       "enum" : [
+                                                          "emerg",
+                                                          "alert",
+                                                          "crit",
+                                                          "err",
+                                                          "warning",
+                                                          "notice",
+                                                          "info",
+                                                          "debug",
+                                                          "nolog"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "macro" : {
+                                                       "description" : "Use predefined standard macro.",
+                                                       "maxLength" : 128,
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "moveto" : {
+                                                       "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "type" : "integer",
+                                                       "typetext" : "<integer> (0 - N)"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "pos" : {
+                                                       "description" : "Update rule at position <pos>.",
+                                                       "minimum" : 0,
+                                                       "optional" : 1,
+                                                       "type" : "integer",
+                                                       "typetext" : "<integer> (0 - N)"
+                                                    },
+                                                    "proto" : {
+                                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                                       "format" : "pve-fw-protocol-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "sport" : {
+                                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                       "format" : "pve-fw-sport-spec",
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "type" : {
+                                                       "description" : "Rule type.",
+                                                       "enum" : [
+                                                          "in",
+                                                          "out",
+                                                          "group"
+                                                       ],
+                                                       "optional" : 1,
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "proxyto" : null,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}",
+                                        "text" : "{pos}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List rules.",
+                                        "method" : "GET",
+                                        "name" : "get_rules",
+                                        "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" : null,
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "pos" : {
+                                                    "type" : "integer"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{pos}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create new rule.",
+                                        "method" : "POST",
+                                        "name" : "create_rule",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "action" : {
+                                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                                 "maxLength" : 20,
+                                                 "minLength" : 2,
+                                                 "optional" : 0,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "comment" : {
+                                                 "description" : "Descriptive comment.",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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>"
+                                              },
+                                              "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>"
+                                              },
+                                              "dport" : {
+                                                 "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                 "format" : "pve-fw-dport-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "enable" : {
+                                                 "description" : "Flag to enable/disable a rule.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "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",
+                                                 "maxLength" : 20,
+                                                 "minLength" : 2,
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "log" : {
+                                                 "description" : "Log level for firewall rule.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macro" : {
+                                                 "description" : "Use predefined standard macro.",
+                                                 "maxLength" : 128,
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "pos" : {
+                                                 "description" : "Update rule at position <pos>.",
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (0 - N)"
+                                              },
+                                              "proto" : {
+                                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                                 "format" : "pve-fw-protocol-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "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>"
+                                              },
+                                              "sport" : {
+                                                 "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                                 "format" : "pve-fw-sport-spec",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "type" : {
+                                                 "description" : "Rule type.",
+                                                 "enum" : [
+                                                    "in",
+                                                    "out",
+                                                    "group"
+                                                 ],
+                                                 "optional" : 0,
+                                                 "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : null,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules",
+                                  "text" : "rules"
+                               },
+                               {
+                                  "children" : [
+                                     {
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Remove IP or Network alias.",
+                                              "method" : "DELETE",
+                                              "name" : "remove_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "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>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Read alias.",
+                                              "method" : "GET",
+                                              "name" : "read_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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"
+                                                    ]
+                                                 ]
+                                              },
+                                              "returns" : {
+                                                 "type" : "object"
+                                              }
+                                           },
+                                           "PUT" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Update IP or Network alias.",
+                                              "method" : "PUT",
+                                              "name" : "update_alias",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "cidr" : {
+                                                       "description" : "Network/IP specification in CIDR format.",
+                                                       "format" : "IPorCIDR",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "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>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "Alias name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "rename" : {
+                                                       "description" : "Rename an existing alias.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "optional" : 1,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 1,
+                                        "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}",
+                                        "text" : "{name}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List aliases",
+                                        "method" : "GET",
+                                        "name" : "get_aliases",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "cidr" : {
+                                                    "type" : "string"
+                                                 },
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "digest" : {
+                                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                    "maxLength" : 40,
+                                                    "optional" : 0,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{name}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create IP or Network Alias.",
+                                        "method" : "POST",
+                                        "name" : "create_alias",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "cidr" : {
+                                                 "description" : "Network/IP specification in CIDR format.",
+                                                 "format" : "IPorCIDR",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "comment" : {
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "name" : {
+                                                 "description" : "Alias name.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases",
+                                  "text" : "aliases"
+                               },
+                               {
+                                  "children" : [
+                                     {
+                                        "children" : [
+                                           {
+                                              "info" : {
+                                                 "DELETE" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Remove IP or Network from IPSet.",
+                                                    "method" : "DELETE",
+                                                    "name" : "remove_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "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>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "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.Config.Network"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "null"
+                                                    }
+                                                 },
+                                                 "GET" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Read IP or Network settings from IPSet.",
+                                                    "method" : "GET",
+                                                    "name" : "read_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "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"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "object"
+                                                    }
+                                                 },
+                                                 "PUT" : {
+                                                    "allowtoken" : 1,
+                                                    "description" : "Update IP or Network settings",
+                                                    "method" : "PUT",
+                                                    "name" : "update_ip",
+                                                    "parameters" : {
+                                                       "additionalProperties" : 0,
+                                                       "properties" : {
+                                                          "cidr" : {
+                                                             "description" : "Network/IP specification in CIDR format.",
+                                                             "format" : "IPorCIDRorAlias",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "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>"
+                                                          },
+                                                          "name" : {
+                                                             "description" : "IP set name.",
+                                                             "maxLength" : 64,
+                                                             "minLength" : 2,
+                                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                             "type" : "string"
+                                                          },
+                                                          "node" : {
+                                                             "description" : "The cluster node name.",
+                                                             "format" : "pve-node",
+                                                             "type" : "string",
+                                                             "typetext" : "<string>"
+                                                          },
+                                                          "nomatch" : {
+                                                             "optional" : 1,
+                                                             "type" : "boolean",
+                                                             "typetext" : "<boolean>"
+                                                          },
+                                                          "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.Config.Network"
+                                                          ]
+                                                       ]
+                                                    },
+                                                    "protected" : 1,
+                                                    "returns" : {
+                                                       "type" : "null"
+                                                    }
+                                                 }
+                                              },
+                                              "leaf" : 1,
+                                              "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}",
+                                              "text" : "{cidr}"
+                                           }
+                                        ],
+                                        "info" : {
+                                           "DELETE" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Delete IPSet",
+                                              "method" : "DELETE",
+                                              "name" : "delete_ipset",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "force" : {
+                                                       "description" : "Delete all members of the IPSet, if there are any.",
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           },
+                                           "GET" : {
+                                              "allowtoken" : 1,
+                                              "description" : "List IPSet content",
+                                              "method" : "GET",
+                                              "name" : "get_ipset",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "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"
+                                                    ]
+                                                 ]
+                                              },
+                                              "returns" : {
+                                                 "items" : {
+                                                    "properties" : {
+                                                       "cidr" : {
+                                                          "type" : "string"
+                                                       },
+                                                       "comment" : {
+                                                          "optional" : 1,
+                                                          "type" : "string"
+                                                       },
+                                                       "digest" : {
+                                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                          "maxLength" : 40,
+                                                          "optional" : 0,
+                                                          "type" : "string"
+                                                       },
+                                                       "nomatch" : {
+                                                          "optional" : 1,
+                                                          "type" : "boolean"
+                                                       }
+                                                    },
+                                                    "type" : "object"
+                                                 },
+                                                 "links" : [
+                                                    {
+                                                       "href" : "{cidr}",
+                                                       "rel" : "child"
+                                                    }
+                                                 ],
+                                                 "type" : "array"
+                                              }
+                                           },
+                                           "POST" : {
+                                              "allowtoken" : 1,
+                                              "description" : "Add IP or Network to IPSet.",
+                                              "method" : "POST",
+                                              "name" : "create_ip",
+                                              "parameters" : {
+                                                 "additionalProperties" : 0,
+                                                 "properties" : {
+                                                    "cidr" : {
+                                                       "description" : "Network/IP specification in CIDR format.",
+                                                       "format" : "IPorCIDRorAlias",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "comment" : {
+                                                       "optional" : 1,
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "IP set name.",
+                                                       "maxLength" : 64,
+                                                       "minLength" : 2,
+                                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                       "type" : "string"
+                                                    },
+                                                    "node" : {
+                                                       "description" : "The cluster node name.",
+                                                       "format" : "pve-node",
+                                                       "type" : "string",
+                                                       "typetext" : "<string>"
+                                                    },
+                                                    "nomatch" : {
+                                                       "optional" : 1,
+                                                       "type" : "boolean",
+                                                       "typetext" : "<boolean>"
+                                                    },
+                                                    "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.Config.Network"
+                                                    ]
+                                                 ]
+                                              },
+                                              "protected" : 1,
+                                              "returns" : {
+                                                 "type" : "null"
+                                              }
+                                           }
+                                        },
+                                        "leaf" : 0,
+                                        "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}",
+                                        "text" : "{name}"
+                                     }
+                                  ],
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List IPSets",
+                                        "method" : "GET",
+                                        "name" : "ipset_index",
+                                        "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "digest" : {
+                                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                                    "maxLength" : 40,
+                                                    "optional" : 0,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "description" : "IP set name.",
+                                                    "maxLength" : 64,
+                                                    "minLength" : 2,
+                                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "links" : [
+                                              {
+                                                 "href" : "{name}",
+                                                 "rel" : "child"
+                                              }
+                                           ],
+                                           "type" : "array"
+                                        }
+                                     },
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Create new IPSet",
+                                        "method" : "POST",
+                                        "name" : "create_ipset",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "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>"
+                                              },
+                                              "name" : {
+                                                 "description" : "IP set name.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "type" : "string"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "rename" : {
+                                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                                                 "maxLength" : 64,
+                                                 "minLength" : 2,
+                                                 "optional" : 1,
+                                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                                 "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 0,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset",
+                                  "text" : "ipset"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Get VM firewall options.",
+                                        "method" : "GET",
+                                        "name" : "get_options",
+                                        "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" : {
+                                           "properties" : {
+                                              "dhcp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable DHCP.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "enable" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable/disable firewall rules.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ipfilter" : {
+                                                 "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "log_level_in" : {
+                                                 "description" : "Log level for incoming traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "log_level_out" : {
+                                                 "description" : "Log level for outgoing traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macfilter" : {
+                                                 "default" : 1,
+                                                 "description" : "Enable/disable MAC address filter.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "ndp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "policy_in" : {
+                                                 "description" : "Input policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "policy_out" : {
+                                                 "description" : "Output policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "radv" : {
+                                                 "description" : "Allow sending Router Advertisement.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              }
+                                           },
+                                           "type" : "object"
+                                        }
+                                     },
+                                     "PUT" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Set Firewall options.",
+                                        "method" : "PUT",
+                                        "name" : "set_options",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "delete" : {
+                                                 "description" : "A list of settings you want to delete.",
+                                                 "format" : "pve-configid-list",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "dhcp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable DHCP.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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>"
+                                              },
+                                              "enable" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable/disable firewall rules.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "ipfilter" : {
+                                                 "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net<id> ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "log_level_in" : {
+                                                 "description" : "Log level for incoming traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "log_level_out" : {
+                                                 "description" : "Log level for outgoing traffic.",
+                                                 "enum" : [
+                                                    "emerg",
+                                                    "alert",
+                                                    "crit",
+                                                    "err",
+                                                    "warning",
+                                                    "notice",
+                                                    "info",
+                                                    "debug",
+                                                    "nolog"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "macfilter" : {
+                                                 "default" : 1,
+                                                 "description" : "Enable/disable MAC address filter.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "ndp" : {
+                                                 "default" : 0,
+                                                 "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "policy_in" : {
+                                                 "description" : "Input policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "policy_out" : {
+                                                 "description" : "Output policy.",
+                                                 "enum" : [
+                                                    "ACCEPT",
+                                                    "REJECT",
+                                                    "DROP"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "type" : "string"
+                                              },
+                                              "radv" : {
+                                                 "description" : "Allow sending Router Advertisement.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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.Config.Network"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "type" : "null"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/options",
+                                  "text" : "options"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Read firewall log",
+                                        "method" : "GET",
+                                        "name" : "log",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "limit" : {
+                                                 "minimum" : 0,
+                                                 "optional" : 1,
+                                                 "type" : "integer",
+                                                 "typetext" : "<integer> (0 - N)"
+                                              },
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "start" : {
+                                                 "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.Console"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "n" : {
+                                                    "description" : "Line number",
+                                                    "type" : "integer"
+                                                 },
+                                                 "t" : {
+                                                    "description" : "Line text",
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/log",
+                                  "text" : "log"
+                               },
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
+                                        "method" : "GET",
+                                        "name" : "refs",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "type" : {
+                                                 "description" : "Only list references of specified type.",
+                                                 "enum" : [
+                                                    "alias",
+                                                    "ipset"
+                                                 ],
+                                                 "optional" : 1,
+                                                 "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"
+                                              ]
+                                           ]
+                                        },
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "comment" : {
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "type" : "string"
+                                                 },
+                                                 "type" : {
+                                                    "enum" : [
+                                                       "alias",
+                                                       "ipset"
+                                                    ],
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/lxc/{vmid}/firewall/refs",
+                                  "text" : "refs"
+                               }
+                            ],
+                            "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>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "user" : "all"
+                                  },
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{name}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/lxc/{vmid}/firewall",
+                            "text" : "firewall"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read VM RRD statistics (returns PNG)",
+                                  "method" : "GET",
+                                  "name" : "rrd",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ds" : {
+                                           "description" : "The list of datasources you want to display.",
+                                           "format" : "pve-configid-list",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "properties" : {
+                                        "filename" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/rrd",
+                            "text" : "rrd"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read VM RRD statistics",
+                                  "method" : "GET",
+                                  "name" : "rrddata",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "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"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/rrddata",
+                            "text" : "rrddata"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Creates a TCP VNC proxy connections.",
+                                  "method" : "POST",
+                                  "name" : "vncproxy",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "height" : {
+                                           "description" : "sets the height of the console in pixels.",
+                                           "maximum" : 2160,
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (16 - 2160)"
+                                        },
+                                        "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)"
+                                        },
+                                        "websocket" : {
+                                           "description" : "use websocket instead of standard VNC.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "width" : {
+                                           "description" : "sets the width of the console in pixels.",
+                                           "maximum" : 4096,
+                                           "minimum" : 16,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (16 - 4096)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cert" : {
+                                           "type" : "string"
+                                        },
+                                        "port" : {
+                                           "type" : "integer"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        },
+                                        "user" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/vncproxy",
+                            "text" : "vncproxy"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Creates a TCP proxy connection.",
+                                  "method" : "POST",
+                                  "name" : "termproxy",
+                                  "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.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "port" : {
+                                           "type" : "integer"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        },
+                                        "user" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/termproxy",
+                            "text" : "termproxy"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Opens a weksocket for VNC traffic.",
+                                  "method" : "GET",
+                                  "name" : "vncwebsocket",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "port" : {
+                                           "description" : "Port number returned by previous vncproxy call.",
+                                           "maximum" : 5999,
+                                           "minimum" : 5900,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (5900 - 5999)"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "vncticket" : {
+                                           "description" : "Ticket from previous call to vncproxy.",
+                                           "maxLength" : 512,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Console"
+                                        ]
+                                     ],
+                                     "description" : "You also need to pass a valid ticket (vncticket)."
+                                  },
+                                  "returns" : {
+                                     "properties" : {
+                                        "port" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/vncwebsocket",
+                            "text" : "vncwebsocket"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Returns a SPICE configuration to connect to the CT.",
+                                  "method" : "POST",
+                                  "name" : "spiceproxy",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "proxy" : {
+                                           "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
+                                           "format" : "address",
+                                           "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.Console"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "additionalProperties" : 1,
+                                     "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
+                                     "properties" : {
+                                        "host" : {
+                                           "type" : "string"
+                                        },
+                                        "password" : {
+                                           "type" : "string"
+                                        },
+                                        "proxy" : {
+                                           "type" : "string"
+                                        },
+                                        "tls-port" : {
+                                           "type" : "integer"
+                                        },
+                                        "type" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/spiceproxy",
+                            "text" : "spiceproxy"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migrate the container to another cluster. Creates a new migration task. EXPERIMENTAL feature!",
+                                  "method" : "POST",
+                                  "name" : "remote_migrate_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "migrate limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "delete" : {
+                                           "default" : 0,
+                                           "description" : "Delete the original CT and related data after successful migration. By default the original CT is kept on the source cluster in a stopped state.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "online" : {
+                                           "description" : "Use online/live migration.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "restart" : {
+                                           "description" : "Use restart migration",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "target-bridge" : {
+                                           "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
+                                           "format" : "bridge-pair-list",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-endpoint" : {
+                                           "description" : "Remote target endpoint",
+                                           "format" : "proxmox-remote",
+                                           "type" : "string",
+                                           "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                        },
+                                        "target-storage" : {
+                                           "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" : "storage-pair-list",
+                                           "optional" : 0,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "timeout" : {
+                                           "default" : 180,
+                                           "description" : "Timeout in seconds for shutdown for restart migration",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer>"
+                                        },
+                                        "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" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/remote_migrate",
+                            "text" : "remote_migrate"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migrate the container to another node. Creates a new migration task.",
+                                  "method" : "POST",
+                                  "name" : "migrate_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "migrate limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "online" : {
+                                           "description" : "Use online/live migration.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "restart" : {
+                                           "description" : "Use restart migration",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "target" : {
+                                           "description" : "Target node.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-storage" : {
+                                           "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" : "storage-pair-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "timeout" : {
+                                           "default" : 180,
+                                           "description" : "Timeout in seconds for shutdown for restart migration",
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer>"
+                                        },
+                                        "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" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/migrate",
+                            "text" : "migrate"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Check if feature for virtual machine is available.",
+                                  "method" : "GET",
+                                  "name" : "vm_feature",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "feature" : {
+                                           "description" : "Feature to check.",
+                                           "enum" : [
+                                              "snapshot",
+                                              "clone",
+                                              "copy"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "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.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "hasFeature" : {
+                                           "type" : "boolean"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/feature",
+                            "text" : "feature"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Create a Template.",
+                                  "method" : "POST",
+                                  "name" : "template",
+                                  "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.Allocate"
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/template",
+                            "text" : "template"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Create a container clone/copy",
+                                  "method" : "POST",
+                                  "name" : "clone_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "clone limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "description" : {
+                                           "description" : "Description for the new CT.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "full" : {
+                                           "description" : "Create a full copy of all disks. This is always done when you clone a normal CT. For CT templates, we try to create a linked clone by default.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "hostname" : {
+                                           "description" : "Set a hostname for the new CT.",
+                                           "format" : "dns-name",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "newid" : {
+                                           "description" : "VMID for the clone.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "pool" : {
+                                           "description" : "Add the new CT to the specified pool.",
+                                           "format" : "pve-poolid",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "snapname" : {
+                                           "description" : "The name of the snapshot.",
+                                           "format" : "pve-configid",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "storage" : {
+                                           "description" : "Target storage for full clone.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target" : {
+                                           "description" : "Target node. Only allowed if the original VM is on shared storage.",
+                                           "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" : [
+                                        "and",
+                                        [
+                                           "perm",
+                                           "/vms/{vmid}",
+                                           [
+                                              "VM.Clone"
+                                           ]
+                                        ],
+                                        [
+                                           "or",
+                                           [
+                                              "perm",
+                                              "/vms/{newid}",
+                                              [
+                                                 "VM.Allocate"
+                                              ]
+                                           ],
+                                           [
+                                              "perm",
+                                              "/pool/{pool}",
+                                              [
+                                                 "VM.Allocate"
+                                              ],
+                                              "require_param",
+                                              "pool"
+                                           ]
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/clone",
+                            "text" : "clone"
+                         },
+                         {
+                            "info" : {
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Resize a container mount point.",
+                                  "method" : "PUT",
+                                  "name" : "resize_vm",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "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>"
+                                        },
+                                        "disk" : {
+                                           "description" : "The disk you want to resize.",
+                                           "enum" : [
+                                              "rootfs",
+                                              "mp0",
+                                              "mp1",
+                                              "mp2",
+                                              "mp3",
+                                              "mp4",
+                                              "mp5",
+                                              "mp6",
+                                              "mp7",
+                                              "mp8",
+                                              "mp9",
+                                              "mp10",
+                                              "mp11",
+                                              "mp12",
+                                              "mp13",
+                                              "mp14",
+                                              "mp15",
+                                              "mp16",
+                                              "mp17",
+                                              "mp18",
+                                              "mp19",
+                                              "mp20",
+                                              "mp21",
+                                              "mp22",
+                                              "mp23",
+                                              "mp24",
+                                              "mp25",
+                                              "mp26",
+                                              "mp27",
+                                              "mp28",
+                                              "mp29",
+                                              "mp30",
+                                              "mp31",
+                                              "mp32",
+                                              "mp33",
+                                              "mp34",
+                                              "mp35",
+                                              "mp36",
+                                              "mp37",
+                                              "mp38",
+                                              "mp39",
+                                              "mp40",
+                                              "mp41",
+                                              "mp42",
+                                              "mp43",
+                                              "mp44",
+                                              "mp45",
+                                              "mp46",
+                                              "mp47",
+                                              "mp48",
+                                              "mp49",
+                                              "mp50",
+                                              "mp51",
+                                              "mp52",
+                                              "mp53",
+                                              "mp54",
+                                              "mp55",
+                                              "mp56",
+                                              "mp57",
+                                              "mp58",
+                                              "mp59",
+                                              "mp60",
+                                              "mp61",
+                                              "mp62",
+                                              "mp63",
+                                              "mp64",
+                                              "mp65",
+                                              "mp66",
+                                              "mp67",
+                                              "mp68",
+                                              "mp69",
+                                              "mp70",
+                                              "mp71",
+                                              "mp72",
+                                              "mp73",
+                                              "mp74",
+                                              "mp75",
+                                              "mp76",
+                                              "mp77",
+                                              "mp78",
+                                              "mp79",
+                                              "mp80",
+                                              "mp81",
+                                              "mp82",
+                                              "mp83",
+                                              "mp84",
+                                              "mp85",
+                                              "mp86",
+                                              "mp87",
+                                              "mp88",
+                                              "mp89",
+                                              "mp90",
+                                              "mp91",
+                                              "mp92",
+                                              "mp93",
+                                              "mp94",
+                                              "mp95",
+                                              "mp96",
+                                              "mp97",
+                                              "mp98",
+                                              "mp99",
+                                              "mp100",
+                                              "mp101",
+                                              "mp102",
+                                              "mp103",
+                                              "mp104",
+                                              "mp105",
+                                              "mp106",
+                                              "mp107",
+                                              "mp108",
+                                              "mp109",
+                                              "mp110",
+                                              "mp111",
+                                              "mp112",
+                                              "mp113",
+                                              "mp114",
+                                              "mp115",
+                                              "mp116",
+                                              "mp117",
+                                              "mp118",
+                                              "mp119",
+                                              "mp120",
+                                              "mp121",
+                                              "mp122",
+                                              "mp123",
+                                              "mp124",
+                                              "mp125",
+                                              "mp126",
+                                              "mp127",
+                                              "mp128",
+                                              "mp129",
+                                              "mp130",
+                                              "mp131",
+                                              "mp132",
+                                              "mp133",
+                                              "mp134",
+                                              "mp135",
+                                              "mp136",
+                                              "mp137",
+                                              "mp138",
+                                              "mp139",
+                                              "mp140",
+                                              "mp141",
+                                              "mp142",
+                                              "mp143",
+                                              "mp144",
+                                              "mp145",
+                                              "mp146",
+                                              "mp147",
+                                              "mp148",
+                                              "mp149",
+                                              "mp150",
+                                              "mp151",
+                                              "mp152",
+                                              "mp153",
+                                              "mp154",
+                                              "mp155",
+                                              "mp156",
+                                              "mp157",
+                                              "mp158",
+                                              "mp159",
+                                              "mp160",
+                                              "mp161",
+                                              "mp162",
+                                              "mp163",
+                                              "mp164",
+                                              "mp165",
+                                              "mp166",
+                                              "mp167",
+                                              "mp168",
+                                              "mp169",
+                                              "mp170",
+                                              "mp171",
+                                              "mp172",
+                                              "mp173",
+                                              "mp174",
+                                              "mp175",
+                                              "mp176",
+                                              "mp177",
+                                              "mp178",
+                                              "mp179",
+                                              "mp180",
+                                              "mp181",
+                                              "mp182",
+                                              "mp183",
+                                              "mp184",
+                                              "mp185",
+                                              "mp186",
+                                              "mp187",
+                                              "mp188",
+                                              "mp189",
+                                              "mp190",
+                                              "mp191",
+                                              "mp192",
+                                              "mp193",
+                                              "mp194",
+                                              "mp195",
+                                              "mp196",
+                                              "mp197",
+                                              "mp198",
+                                              "mp199",
+                                              "mp200",
+                                              "mp201",
+                                              "mp202",
+                                              "mp203",
+                                              "mp204",
+                                              "mp205",
+                                              "mp206",
+                                              "mp207",
+                                              "mp208",
+                                              "mp209",
+                                              "mp210",
+                                              "mp211",
+                                              "mp212",
+                                              "mp213",
+                                              "mp214",
+                                              "mp215",
+                                              "mp216",
+                                              "mp217",
+                                              "mp218",
+                                              "mp219",
+                                              "mp220",
+                                              "mp221",
+                                              "mp222",
+                                              "mp223",
+                                              "mp224",
+                                              "mp225",
+                                              "mp226",
+                                              "mp227",
+                                              "mp228",
+                                              "mp229",
+                                              "mp230",
+                                              "mp231",
+                                              "mp232",
+                                              "mp233",
+                                              "mp234",
+                                              "mp235",
+                                              "mp236",
+                                              "mp237",
+                                              "mp238",
+                                              "mp239",
+                                              "mp240",
+                                              "mp241",
+                                              "mp242",
+                                              "mp243",
+                                              "mp244",
+                                              "mp245",
+                                              "mp246",
+                                              "mp247",
+                                              "mp248",
+                                              "mp249",
+                                              "mp250",
+                                              "mp251",
+                                              "mp252",
+                                              "mp253",
+                                              "mp254",
+                                              "mp255"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "size" : {
+                                           "description" : "The new size. With the '+' sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.",
+                                           "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?",
+                                           "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.Config.Disk"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "the task ID.",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/resize",
+                            "text" : "resize"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Move a rootfs-/mp-volume to a different storage or to a different container.",
+                                  "method" : "POST",
+                                  "name" : "move_volume",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bwlimit" : {
+                                           "default" : "clone limit from datacenter or storage config",
+                                           "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                           "minimum" : "0",
+                                           "optional" : 1,
+                                           "type" : "number",
+                                           "typetext" : "<number> (0 - N)"
+                                        },
+                                        "delete" : {
+                                           "default" : 0,
+                                           "description" : "Delete the original volume after successful copy. By default the original is kept as an unused volume entry.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "digest" : {
+                                           "description" : "Prevent changes if current configuration file has different SHA1 \" .\n\t\t    \"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>"
+                                        },
+                                        "storage" : {
+                                           "description" : "Target Storage.",
+                                           "format" : "pve-storage-id",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-digest" : {
+                                           "description" : "Prevent changes if current configuration file of the target \" .\n\t\t    \"container has a different SHA1 digest. This can be used to prevent \" .\n\t\t    \"concurrent modifications.",
+                                           "maxLength" : 40,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "target-vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "target-volume" : {
+                                           "description" : "The config key the volume will be moved to. Default is the source volume key.",
+                                           "enum" : [
+                                              "rootfs",
+                                              "mp0",
+                                              "mp1",
+                                              "mp2",
+                                              "mp3",
+                                              "mp4",
+                                              "mp5",
+                                              "mp6",
+                                              "mp7",
+                                              "mp8",
+                                              "mp9",
+                                              "mp10",
+                                              "mp11",
+                                              "mp12",
+                                              "mp13",
+                                              "mp14",
+                                              "mp15",
+                                              "mp16",
+                                              "mp17",
+                                              "mp18",
+                                              "mp19",
+                                              "mp20",
+                                              "mp21",
+                                              "mp22",
+                                              "mp23",
+                                              "mp24",
+                                              "mp25",
+                                              "mp26",
+                                              "mp27",
+                                              "mp28",
+                                              "mp29",
+                                              "mp30",
+                                              "mp31",
+                                              "mp32",
+                                              "mp33",
+                                              "mp34",
+                                              "mp35",
+                                              "mp36",
+                                              "mp37",
+                                              "mp38",
+                                              "mp39",
+                                              "mp40",
+                                              "mp41",
+                                              "mp42",
+                                              "mp43",
+                                              "mp44",
+                                              "mp45",
+                                              "mp46",
+                                              "mp47",
+                                              "mp48",
+                                              "mp49",
+                                              "mp50",
+                                              "mp51",
+                                              "mp52",
+                                              "mp53",
+                                              "mp54",
+                                              "mp55",
+                                              "mp56",
+                                              "mp57",
+                                              "mp58",
+                                              "mp59",
+                                              "mp60",
+                                              "mp61",
+                                              "mp62",
+                                              "mp63",
+                                              "mp64",
+                                              "mp65",
+                                              "mp66",
+                                              "mp67",
+                                              "mp68",
+                                              "mp69",
+                                              "mp70",
+                                              "mp71",
+                                              "mp72",
+                                              "mp73",
+                                              "mp74",
+                                              "mp75",
+                                              "mp76",
+                                              "mp77",
+                                              "mp78",
+                                              "mp79",
+                                              "mp80",
+                                              "mp81",
+                                              "mp82",
+                                              "mp83",
+                                              "mp84",
+                                              "mp85",
+                                              "mp86",
+                                              "mp87",
+                                              "mp88",
+                                              "mp89",
+                                              "mp90",
+                                              "mp91",
+                                              "mp92",
+                                              "mp93",
+                                              "mp94",
+                                              "mp95",
+                                              "mp96",
+                                              "mp97",
+                                              "mp98",
+                                              "mp99",
+                                              "mp100",
+                                              "mp101",
+                                              "mp102",
+                                              "mp103",
+                                              "mp104",
+                                              "mp105",
+                                              "mp106",
+                                              "mp107",
+                                              "mp108",
+                                              "mp109",
+                                              "mp110",
+                                              "mp111",
+                                              "mp112",
+                                              "mp113",
+                                              "mp114",
+                                              "mp115",
+                                              "mp116",
+                                              "mp117",
+                                              "mp118",
+                                              "mp119",
+                                              "mp120",
+                                              "mp121",
+                                              "mp122",
+                                              "mp123",
+                                              "mp124",
+                                              "mp125",
+                                              "mp126",
+                                              "mp127",
+                                              "mp128",
+                                              "mp129",
+                                              "mp130",
+                                              "mp131",
+                                              "mp132",
+                                              "mp133",
+                                              "mp134",
+                                              "mp135",
+                                              "mp136",
+                                              "mp137",
+                                              "mp138",
+                                              "mp139",
+                                              "mp140",
+                                              "mp141",
+                                              "mp142",
+                                              "mp143",
+                                              "mp144",
+                                              "mp145",
+                                              "mp146",
+                                              "mp147",
+                                              "mp148",
+                                              "mp149",
+                                              "mp150",
+                                              "mp151",
+                                              "mp152",
+                                              "mp153",
+                                              "mp154",
+                                              "mp155",
+                                              "mp156",
+                                              "mp157",
+                                              "mp158",
+                                              "mp159",
+                                              "mp160",
+                                              "mp161",
+                                              "mp162",
+                                              "mp163",
+                                              "mp164",
+                                              "mp165",
+                                              "mp166",
+                                              "mp167",
+                                              "mp168",
+                                              "mp169",
+                                              "mp170",
+                                              "mp171",
+                                              "mp172",
+                                              "mp173",
+                                              "mp174",
+                                              "mp175",
+                                              "mp176",
+                                              "mp177",
+                                              "mp178",
+                                              "mp179",
+                                              "mp180",
+                                              "mp181",
+                                              "mp182",
+                                              "mp183",
+                                              "mp184",
+                                              "mp185",
+                                              "mp186",
+                                              "mp187",
+                                              "mp188",
+                                              "mp189",
+                                              "mp190",
+                                              "mp191",
+                                              "mp192",
+                                              "mp193",
+                                              "mp194",
+                                              "mp195",
+                                              "mp196",
+                                              "mp197",
+                                              "mp198",
+                                              "mp199",
+                                              "mp200",
+                                              "mp201",
+                                              "mp202",
+                                              "mp203",
+                                              "mp204",
+                                              "mp205",
+                                              "mp206",
+                                              "mp207",
+                                              "mp208",
+                                              "mp209",
+                                              "mp210",
+                                              "mp211",
+                                              "mp212",
+                                              "mp213",
+                                              "mp214",
+                                              "mp215",
+                                              "mp216",
+                                              "mp217",
+                                              "mp218",
+                                              "mp219",
+                                              "mp220",
+                                              "mp221",
+                                              "mp222",
+                                              "mp223",
+                                              "mp224",
+                                              "mp225",
+                                              "mp226",
+                                              "mp227",
+                                              "mp228",
+                                              "mp229",
+                                              "mp230",
+                                              "mp231",
+                                              "mp232",
+                                              "mp233",
+                                              "mp234",
+                                              "mp235",
+                                              "mp236",
+                                              "mp237",
+                                              "mp238",
+                                              "mp239",
+                                              "mp240",
+                                              "mp241",
+                                              "mp242",
+                                              "mp243",
+                                              "mp244",
+                                              "mp245",
+                                              "mp246",
+                                              "mp247",
+                                              "mp248",
+                                              "mp249",
+                                              "mp250",
+                                              "mp251",
+                                              "mp252",
+                                              "mp253",
+                                              "mp254",
+                                              "mp255",
+                                              "unused0",
+                                              "unused1",
+                                              "unused2",
+                                              "unused3",
+                                              "unused4",
+                                              "unused5",
+                                              "unused6",
+                                              "unused7",
+                                              "unused8",
+                                              "unused9",
+                                              "unused10",
+                                              "unused11",
+                                              "unused12",
+                                              "unused13",
+                                              "unused14",
+                                              "unused15",
+                                              "unused16",
+                                              "unused17",
+                                              "unused18",
+                                              "unused19",
+                                              "unused20",
+                                              "unused21",
+                                              "unused22",
+                                              "unused23",
+                                              "unused24",
+                                              "unused25",
+                                              "unused26",
+                                              "unused27",
+                                              "unused28",
+                                              "unused29",
+                                              "unused30",
+                                              "unused31",
+                                              "unused32",
+                                              "unused33",
+                                              "unused34",
+                                              "unused35",
+                                              "unused36",
+                                              "unused37",
+                                              "unused38",
+                                              "unused39",
+                                              "unused40",
+                                              "unused41",
+                                              "unused42",
+                                              "unused43",
+                                              "unused44",
+                                              "unused45",
+                                              "unused46",
+                                              "unused47",
+                                              "unused48",
+                                              "unused49",
+                                              "unused50",
+                                              "unused51",
+                                              "unused52",
+                                              "unused53",
+                                              "unused54",
+                                              "unused55",
+                                              "unused56",
+                                              "unused57",
+                                              "unused58",
+                                              "unused59",
+                                              "unused60",
+                                              "unused61",
+                                              "unused62",
+                                              "unused63",
+                                              "unused64",
+                                              "unused65",
+                                              "unused66",
+                                              "unused67",
+                                              "unused68",
+                                              "unused69",
+                                              "unused70",
+                                              "unused71",
+                                              "unused72",
+                                              "unused73",
+                                              "unused74",
+                                              "unused75",
+                                              "unused76",
+                                              "unused77",
+                                              "unused78",
+                                              "unused79",
+                                              "unused80",
+                                              "unused81",
+                                              "unused82",
+                                              "unused83",
+                                              "unused84",
+                                              "unused85",
+                                              "unused86",
+                                              "unused87",
+                                              "unused88",
+                                              "unused89",
+                                              "unused90",
+                                              "unused91",
+                                              "unused92",
+                                              "unused93",
+                                              "unused94",
+                                              "unused95",
+                                              "unused96",
+                                              "unused97",
+                                              "unused98",
+                                              "unused99",
+                                              "unused100",
+                                              "unused101",
+                                              "unused102",
+                                              "unused103",
+                                              "unused104",
+                                              "unused105",
+                                              "unused106",
+                                              "unused107",
+                                              "unused108",
+                                              "unused109",
+                                              "unused110",
+                                              "unused111",
+                                              "unused112",
+                                              "unused113",
+                                              "unused114",
+                                              "unused115",
+                                              "unused116",
+                                              "unused117",
+                                              "unused118",
+                                              "unused119",
+                                              "unused120",
+                                              "unused121",
+                                              "unused122",
+                                              "unused123",
+                                              "unused124",
+                                              "unused125",
+                                              "unused126",
+                                              "unused127",
+                                              "unused128",
+                                              "unused129",
+                                              "unused130",
+                                              "unused131",
+                                              "unused132",
+                                              "unused133",
+                                              "unused134",
+                                              "unused135",
+                                              "unused136",
+                                              "unused137",
+                                              "unused138",
+                                              "unused139",
+                                              "unused140",
+                                              "unused141",
+                                              "unused142",
+                                              "unused143",
+                                              "unused144",
+                                              "unused145",
+                                              "unused146",
+                                              "unused147",
+                                              "unused148",
+                                              "unused149",
+                                              "unused150",
+                                              "unused151",
+                                              "unused152",
+                                              "unused153",
+                                              "unused154",
+                                              "unused155",
+                                              "unused156",
+                                              "unused157",
+                                              "unused158",
+                                              "unused159",
+                                              "unused160",
+                                              "unused161",
+                                              "unused162",
+                                              "unused163",
+                                              "unused164",
+                                              "unused165",
+                                              "unused166",
+                                              "unused167",
+                                              "unused168",
+                                              "unused169",
+                                              "unused170",
+                                              "unused171",
+                                              "unused172",
+                                              "unused173",
+                                              "unused174",
+                                              "unused175",
+                                              "unused176",
+                                              "unused177",
+                                              "unused178",
+                                              "unused179",
+                                              "unused180",
+                                              "unused181",
+                                              "unused182",
+                                              "unused183",
+                                              "unused184",
+                                              "unused185",
+                                              "unused186",
+                                              "unused187",
+                                              "unused188",
+                                              "unused189",
+                                              "unused190",
+                                              "unused191",
+                                              "unused192",
+                                              "unused193",
+                                              "unused194",
+                                              "unused195",
+                                              "unused196",
+                                              "unused197",
+                                              "unused198",
+                                              "unused199",
+                                              "unused200",
+                                              "unused201",
+                                              "unused202",
+                                              "unused203",
+                                              "unused204",
+                                              "unused205",
+                                              "unused206",
+                                              "unused207",
+                                              "unused208",
+                                              "unused209",
+                                              "unused210",
+                                              "unused211",
+                                              "unused212",
+                                              "unused213",
+                                              "unused214",
+                                              "unused215",
+                                              "unused216",
+                                              "unused217",
+                                              "unused218",
+                                              "unused219",
+                                              "unused220",
+                                              "unused221",
+                                              "unused222",
+                                              "unused223",
+                                              "unused224",
+                                              "unused225",
+                                              "unused226",
+                                              "unused227",
+                                              "unused228",
+                                              "unused229",
+                                              "unused230",
+                                              "unused231",
+                                              "unused232",
+                                              "unused233",
+                                              "unused234",
+                                              "unused235",
+                                              "unused236",
+                                              "unused237",
+                                              "unused238",
+                                              "unused239",
+                                              "unused240",
+                                              "unused241",
+                                              "unused242",
+                                              "unused243",
+                                              "unused244",
+                                              "unused245",
+                                              "unused246",
+                                              "unused247",
+                                              "unused248",
+                                              "unused249",
+                                              "unused250",
+                                              "unused251",
+                                              "unused252",
+                                              "unused253",
+                                              "unused254",
+                                              "unused255"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        },
+                                        "volume" : {
+                                           "description" : "Volume which will be moved.",
+                                           "enum" : [
+                                              "rootfs",
+                                              "mp0",
+                                              "mp1",
+                                              "mp2",
+                                              "mp3",
+                                              "mp4",
+                                              "mp5",
+                                              "mp6",
+                                              "mp7",
+                                              "mp8",
+                                              "mp9",
+                                              "mp10",
+                                              "mp11",
+                                              "mp12",
+                                              "mp13",
+                                              "mp14",
+                                              "mp15",
+                                              "mp16",
+                                              "mp17",
+                                              "mp18",
+                                              "mp19",
+                                              "mp20",
+                                              "mp21",
+                                              "mp22",
+                                              "mp23",
+                                              "mp24",
+                                              "mp25",
+                                              "mp26",
+                                              "mp27",
+                                              "mp28",
+                                              "mp29",
+                                              "mp30",
+                                              "mp31",
+                                              "mp32",
+                                              "mp33",
+                                              "mp34",
+                                              "mp35",
+                                              "mp36",
+                                              "mp37",
+                                              "mp38",
+                                              "mp39",
+                                              "mp40",
+                                              "mp41",
+                                              "mp42",
+                                              "mp43",
+                                              "mp44",
+                                              "mp45",
+                                              "mp46",
+                                              "mp47",
+                                              "mp48",
+                                              "mp49",
+                                              "mp50",
+                                              "mp51",
+                                              "mp52",
+                                              "mp53",
+                                              "mp54",
+                                              "mp55",
+                                              "mp56",
+                                              "mp57",
+                                              "mp58",
+                                              "mp59",
+                                              "mp60",
+                                              "mp61",
+                                              "mp62",
+                                              "mp63",
+                                              "mp64",
+                                              "mp65",
+                                              "mp66",
+                                              "mp67",
+                                              "mp68",
+                                              "mp69",
+                                              "mp70",
+                                              "mp71",
+                                              "mp72",
+                                              "mp73",
+                                              "mp74",
+                                              "mp75",
+                                              "mp76",
+                                              "mp77",
+                                              "mp78",
+                                              "mp79",
+                                              "mp80",
+                                              "mp81",
+                                              "mp82",
+                                              "mp83",
+                                              "mp84",
+                                              "mp85",
+                                              "mp86",
+                                              "mp87",
+                                              "mp88",
+                                              "mp89",
+                                              "mp90",
+                                              "mp91",
+                                              "mp92",
+                                              "mp93",
+                                              "mp94",
+                                              "mp95",
+                                              "mp96",
+                                              "mp97",
+                                              "mp98",
+                                              "mp99",
+                                              "mp100",
+                                              "mp101",
+                                              "mp102",
+                                              "mp103",
+                                              "mp104",
+                                              "mp105",
+                                              "mp106",
+                                              "mp107",
+                                              "mp108",
+                                              "mp109",
+                                              "mp110",
+                                              "mp111",
+                                              "mp112",
+                                              "mp113",
+                                              "mp114",
+                                              "mp115",
+                                              "mp116",
+                                              "mp117",
+                                              "mp118",
+                                              "mp119",
+                                              "mp120",
+                                              "mp121",
+                                              "mp122",
+                                              "mp123",
+                                              "mp124",
+                                              "mp125",
+                                              "mp126",
+                                              "mp127",
+                                              "mp128",
+                                              "mp129",
+                                              "mp130",
+                                              "mp131",
+                                              "mp132",
+                                              "mp133",
+                                              "mp134",
+                                              "mp135",
+                                              "mp136",
+                                              "mp137",
+                                              "mp138",
+                                              "mp139",
+                                              "mp140",
+                                              "mp141",
+                                              "mp142",
+                                              "mp143",
+                                              "mp144",
+                                              "mp145",
+                                              "mp146",
+                                              "mp147",
+                                              "mp148",
+                                              "mp149",
+                                              "mp150",
+                                              "mp151",
+                                              "mp152",
+                                              "mp153",
+                                              "mp154",
+                                              "mp155",
+                                              "mp156",
+                                              "mp157",
+                                              "mp158",
+                                              "mp159",
+                                              "mp160",
+                                              "mp161",
+                                              "mp162",
+                                              "mp163",
+                                              "mp164",
+                                              "mp165",
+                                              "mp166",
+                                              "mp167",
+                                              "mp168",
+                                              "mp169",
+                                              "mp170",
+                                              "mp171",
+                                              "mp172",
+                                              "mp173",
+                                              "mp174",
+                                              "mp175",
+                                              "mp176",
+                                              "mp177",
+                                              "mp178",
+                                              "mp179",
+                                              "mp180",
+                                              "mp181",
+                                              "mp182",
+                                              "mp183",
+                                              "mp184",
+                                              "mp185",
+                                              "mp186",
+                                              "mp187",
+                                              "mp188",
+                                              "mp189",
+                                              "mp190",
+                                              "mp191",
+                                              "mp192",
+                                              "mp193",
+                                              "mp194",
+                                              "mp195",
+                                              "mp196",
+                                              "mp197",
+                                              "mp198",
+                                              "mp199",
+                                              "mp200",
+                                              "mp201",
+                                              "mp202",
+                                              "mp203",
+                                              "mp204",
+                                              "mp205",
+                                              "mp206",
+                                              "mp207",
+                                              "mp208",
+                                              "mp209",
+                                              "mp210",
+                                              "mp211",
+                                              "mp212",
+                                              "mp213",
+                                              "mp214",
+                                              "mp215",
+                                              "mp216",
+                                              "mp217",
+                                              "mp218",
+                                              "mp219",
+                                              "mp220",
+                                              "mp221",
+                                              "mp222",
+                                              "mp223",
+                                              "mp224",
+                                              "mp225",
+                                              "mp226",
+                                              "mp227",
+                                              "mp228",
+                                              "mp229",
+                                              "mp230",
+                                              "mp231",
+                                              "mp232",
+                                              "mp233",
+                                              "mp234",
+                                              "mp235",
+                                              "mp236",
+                                              "mp237",
+                                              "mp238",
+                                              "mp239",
+                                              "mp240",
+                                              "mp241",
+                                              "mp242",
+                                              "mp243",
+                                              "mp244",
+                                              "mp245",
+                                              "mp246",
+                                              "mp247",
+                                              "mp248",
+                                              "mp249",
+                                              "mp250",
+                                              "mp251",
+                                              "mp252",
+                                              "mp253",
+                                              "mp254",
+                                              "mp255",
+                                              "unused0",
+                                              "unused1",
+                                              "unused2",
+                                              "unused3",
+                                              "unused4",
+                                              "unused5",
+                                              "unused6",
+                                              "unused7",
+                                              "unused8",
+                                              "unused9",
+                                              "unused10",
+                                              "unused11",
+                                              "unused12",
+                                              "unused13",
+                                              "unused14",
+                                              "unused15",
+                                              "unused16",
+                                              "unused17",
+                                              "unused18",
+                                              "unused19",
+                                              "unused20",
+                                              "unused21",
+                                              "unused22",
+                                              "unused23",
+                                              "unused24",
+                                              "unused25",
+                                              "unused26",
+                                              "unused27",
+                                              "unused28",
+                                              "unused29",
+                                              "unused30",
+                                              "unused31",
+                                              "unused32",
+                                              "unused33",
+                                              "unused34",
+                                              "unused35",
+                                              "unused36",
+                                              "unused37",
+                                              "unused38",
+                                              "unused39",
+                                              "unused40",
+                                              "unused41",
+                                              "unused42",
+                                              "unused43",
+                                              "unused44",
+                                              "unused45",
+                                              "unused46",
+                                              "unused47",
+                                              "unused48",
+                                              "unused49",
+                                              "unused50",
+                                              "unused51",
+                                              "unused52",
+                                              "unused53",
+                                              "unused54",
+                                              "unused55",
+                                              "unused56",
+                                              "unused57",
+                                              "unused58",
+                                              "unused59",
+                                              "unused60",
+                                              "unused61",
+                                              "unused62",
+                                              "unused63",
+                                              "unused64",
+                                              "unused65",
+                                              "unused66",
+                                              "unused67",
+                                              "unused68",
+                                              "unused69",
+                                              "unused70",
+                                              "unused71",
+                                              "unused72",
+                                              "unused73",
+                                              "unused74",
+                                              "unused75",
+                                              "unused76",
+                                              "unused77",
+                                              "unused78",
+                                              "unused79",
+                                              "unused80",
+                                              "unused81",
+                                              "unused82",
+                                              "unused83",
+                                              "unused84",
+                                              "unused85",
+                                              "unused86",
+                                              "unused87",
+                                              "unused88",
+                                              "unused89",
+                                              "unused90",
+                                              "unused91",
+                                              "unused92",
+                                              "unused93",
+                                              "unused94",
+                                              "unused95",
+                                              "unused96",
+                                              "unused97",
+                                              "unused98",
+                                              "unused99",
+                                              "unused100",
+                                              "unused101",
+                                              "unused102",
+                                              "unused103",
+                                              "unused104",
+                                              "unused105",
+                                              "unused106",
+                                              "unused107",
+                                              "unused108",
+                                              "unused109",
+                                              "unused110",
+                                              "unused111",
+                                              "unused112",
+                                              "unused113",
+                                              "unused114",
+                                              "unused115",
+                                              "unused116",
+                                              "unused117",
+                                              "unused118",
+                                              "unused119",
+                                              "unused120",
+                                              "unused121",
+                                              "unused122",
+                                              "unused123",
+                                              "unused124",
+                                              "unused125",
+                                              "unused126",
+                                              "unused127",
+                                              "unused128",
+                                              "unused129",
+                                              "unused130",
+                                              "unused131",
+                                              "unused132",
+                                              "unused133",
+                                              "unused134",
+                                              "unused135",
+                                              "unused136",
+                                              "unused137",
+                                              "unused138",
+                                              "unused139",
+                                              "unused140",
+                                              "unused141",
+                                              "unused142",
+                                              "unused143",
+                                              "unused144",
+                                              "unused145",
+                                              "unused146",
+                                              "unused147",
+                                              "unused148",
+                                              "unused149",
+                                              "unused150",
+                                              "unused151",
+                                              "unused152",
+                                              "unused153",
+                                              "unused154",
+                                              "unused155",
+                                              "unused156",
+                                              "unused157",
+                                              "unused158",
+                                              "unused159",
+                                              "unused160",
+                                              "unused161",
+                                              "unused162",
+                                              "unused163",
+                                              "unused164",
+                                              "unused165",
+                                              "unused166",
+                                              "unused167",
+                                              "unused168",
+                                              "unused169",
+                                              "unused170",
+                                              "unused171",
+                                              "unused172",
+                                              "unused173",
+                                              "unused174",
+                                              "unused175",
+                                              "unused176",
+                                              "unused177",
+                                              "unused178",
+                                              "unused179",
+                                              "unused180",
+                                              "unused181",
+                                              "unused182",
+                                              "unused183",
+                                              "unused184",
+                                              "unused185",
+                                              "unused186",
+                                              "unused187",
+                                              "unused188",
+                                              "unused189",
+                                              "unused190",
+                                              "unused191",
+                                              "unused192",
+                                              "unused193",
+                                              "unused194",
+                                              "unused195",
+                                              "unused196",
+                                              "unused197",
+                                              "unused198",
+                                              "unused199",
+                                              "unused200",
+                                              "unused201",
+                                              "unused202",
+                                              "unused203",
+                                              "unused204",
+                                              "unused205",
+                                              "unused206",
+                                              "unused207",
+                                              "unused208",
+                                              "unused209",
+                                              "unused210",
+                                              "unused211",
+                                              "unused212",
+                                              "unused213",
+                                              "unused214",
+                                              "unused215",
+                                              "unused216",
+                                              "unused217",
+                                              "unused218",
+                                              "unused219",
+                                              "unused220",
+                                              "unused221",
+                                              "unused222",
+                                              "unused223",
+                                              "unused224",
+                                              "unused225",
+                                              "unused226",
+                                              "unused227",
+                                              "unused228",
+                                              "unused229",
+                                              "unused230",
+                                              "unused231",
+                                              "unused232",
+                                              "unused233",
+                                              "unused234",
+                                              "unused235",
+                                              "unused236",
+                                              "unused237",
+                                              "unused238",
+                                              "unused239",
+                                              "unused240",
+                                              "unused241",
+                                              "unused242",
+                                              "unused243",
+                                              "unused244",
+                                              "unused245",
+                                              "unused246",
+                                              "unused247",
+                                              "unused248",
+                                              "unused249",
+                                              "unused250",
+                                              "unused251",
+                                              "unused252",
+                                              "unused253",
+                                              "unused254",
+                                              "unused255"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/vms/{vmid}",
+                                        [
+                                           "VM.Config.Disk"
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a volume to another container, you need the permissions on the target container as well."
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "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" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migration tunnel endpoint - only for internal use by CT migration.",
+                                  "method" : "POST",
+                                  "name" : "mtunnel",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "bridges" : {
+                                           "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
+                                           "format" : "pve-bridge-id-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "storages" : {
+                                           "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
+                                           "format" : "pve-storage-id-list",
+                                           "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" : [
+                                        "and",
+                                        [
+                                           "perm",
+                                           "/vms/{vmid}",
+                                           [
+                                              "VM.Allocate"
+                                           ]
+                                        ],
+                                        [
+                                           "perm",
+                                           "/",
+                                           [
+                                              "Sys.Incoming"
+                                           ]
+                                        ]
+                                     ],
+                                     "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "socket" : {
+                                           "type" : "string"
+                                        },
+                                        "ticket" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        }
+                                     }
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/mtunnel",
+                            "text" : "mtunnel"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
+                                  "method" : "GET",
+                                  "name" : "mtunnelwebsocket",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "socket" : {
+                                           "description" : "unix socket to forward to",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "ticket" : {
+                                           "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "The (unique) ID of the VM.",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
+                                     "user" : "all"
+                                  },
+                                  "returns" : {
+                                     "properties" : {
+                                        "port" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "socket" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/lxc/{vmid}/mtunnelwebsocket",
+                            "text" : "mtunnelwebsocket"
+                         }
+                      ],
+                      "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",
+                                     "minimum" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (1 - N)"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/vms/{vmid}",
+                                  [
+                                     "VM.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Directory index",
+                            "method" : "GET",
+                            "name" : "vmdiridx",
+                            "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" : {
+                               "user" : "all"
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "subdir" : {
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{subdir}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/lxc/{vmid}",
+                      "text" : "{vmid}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "LXC container index (per node).",
+                      "method" : "GET",
+                      "name" : "vmlist",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "Only list CTs where you have VM.Audit permissons on /vms/<vmid>.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "cpus" : {
+                                  "description" : "Maximum usable CPUs.",
+                                  "optional" : 1,
+                                  "type" : "number"
+                               },
+                               "lock" : {
+                                  "description" : "The current config lock, if any.",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "maxdisk" : {
+                                  "description" : "Root disk size in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "maxmem" : {
+                                  "description" : "Maximum memory in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "maxswap" : {
+                                  "description" : "Maximum SWAP memory in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "name" : {
+                                  "description" : "Container name.",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "status" : {
+                                  "description" : "LXC Container status.",
+                                  "enum" : [
+                                     "stopped",
+                                     "running"
+                                  ],
+                                  "type" : "string"
+                               },
+                               "tags" : {
+                                  "description" : "The current configured tags, if any.",
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "uptime" : {
+                                  "description" : "Uptime.",
+                                  "optional" : 1,
+                                  "renderer" : "duration",
+                                  "type" : "integer"
+                               },
+                               "vmid" : {
+                                  "description" : "The (unique) ID of the VM.",
+                                  "format" : "pve-vmid",
+                                  "minimum" : 1,
+                                  "type" : "integer"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{vmid}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create or restore a container.",
+                      "method" : "POST",
+                      "name" : "create_vm",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "arch" : {
+                               "default" : "amd64",
+                               "description" : "OS architecture type.",
+                               "enum" : [
+                                  "amd64",
+                                  "i386",
+                                  "arm64",
+                                  "armhf"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "bwlimit" : {
+                               "default" : "restore limit from datacenter or storage config",
+                               "description" : "Override I/O bandwidth limit (in KiB/s).",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number",
+                               "typetext" : "<number> (0 - N)"
+                            },
+                            "cmode" : {
+                               "default" : "tty",
+                               "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).",
+                               "enum" : [
+                                  "shell",
+                                  "console",
+                                  "tty"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "console" : {
+                               "default" : 1,
+                               "description" : "Attach a console device (/dev/console) to the container.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "cores" : {
+                               "description" : "The number of cores assigned to the container. A container can use all available cores by default.",
+                               "maximum" : 8192,
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "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" : 8192,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "number",
+                               "typetext" : "<number> (0 - 8192)"
+                            },
+                            "cpuunits" : {
+                               "default" : "cgroup v1: 1024, cgroup v2: 100",
+                               "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
+                               "maximum" : 500000,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 500000)",
+                               "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
+                            },
+                            "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" : "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"
+                                  },
+                                  "keyctl" : {
+                                     "default" : 0,
+                                     "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "mknod" : {
+                                     "default" : 0,
+                                     "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "mount" : {
+                                     "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.",
+                                     "format_description" : "fstype;fstype;...",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:[a-zA-Z0-9_; ]+)",
+                                     "type" : "string"
+                                  },
+                                  "nesting" : {
+                                     "default" : 0,
+                                     "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "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.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "hookscript" : {
+                               "description" : "Script that will be exectued during various steps in the containers lifetime.",
+                               "format" : "pve-volume-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "hostname" : {
+                               "description" : "Set a host name for the container.",
+                               "format" : "dns-name",
+                               "maxLength" : 255,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ignore-unpack-errors" : {
+                               "description" : "Ignore errors when extracting the template.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "lock" : {
+                               "description" : "Lock/unlock the container.",
+                               "enum" : [
+                                  "backup",
+                                  "create",
+                                  "destroyed",
+                                  "disk",
+                                  "fstrim",
+                                  "migrate",
+                                  "mounted",
+                                  "rollback",
+                                  "snapshot",
+                                  "snapshot-delete"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "memory" : {
+                               "default" : 512,
+                               "description" : "Amount of RAM for the container in MB.",
+                               "minimum" : 16,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (16 - N)"
+                            },
+                            "mp[n]" : {
+                               "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.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "backup" : {
+                                     "description" : "Whether to include the mount point in backups.",
+                                     "optional" : 1,
+                                     "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|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|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",
+                                     "format_description" : "Path",
+                                     "type" : "string",
+                                     "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons."
+                                  },
+                                  "quota" : {
+                                     "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Will include this volume to a storage replica job.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ro" : {
+                                     "description" : "Read-only mount point",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Volume size (read only value).",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "default_key" : 1,
+                                     "description" : "Volume, device or directory to mount into the container.",
+                                     "format" : "pve-lxc-mp-string",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "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" : "lxc-ip-with-ll-iface-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "net[n]" : {
+                               "description" : "Specifies network interfaces for the container.",
+                               "format" : {
+                                  "bridge" : {
+                                     "description" : "Bridge to attach the network device to.",
+                                     "format_description" : "bridge",
+                                     "optional" : 1,
+                                     "pattern" : "[-_.\\w\\d]+",
+                                     "type" : "string"
+                                  },
+                                  "firewall" : {
+                                     "description" : "Controls whether this interface's firewall rules should be used.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "gw" : {
+                                     "description" : "Default gateway for IPv4 traffic.",
+                                     "format" : "ipv4",
+                                     "format_description" : "GatewayIPv4",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "gw6" : {
+                                     "description" : "Default gateway for IPv6 traffic.",
+                                     "format" : "ipv6",
+                                     "format_description" : "GatewayIPv6",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "hwaddr" : {
+                                     "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)",
+                                     "format" : "mac-addr",
+                                     "format_description" : "XX:XX:XX:XX:XX:XX",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                  },
+                                  "ip" : {
+                                     "description" : "IPv4 address in CIDR format.",
+                                     "format" : "pve-ipv4-config",
+                                     "format_description" : "(IPv4/CIDR|dhcp|manual)",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "ip6" : {
+                                     "description" : "IPv6 address in CIDR format.",
+                                     "format" : "pve-ipv6-config",
+                                     "format_description" : "(IPv6/CIDR|auto|dhcp|manual)",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "mtu" : {
+                                     "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                     "maximum" : 65535,
+                                     "minimum" : 64,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "name" : {
+                                     "description" : "Name of the network device as seen from inside the container. (lxc.network.name)",
+                                     "format_description" : "string",
+                                     "pattern" : "[-_.\\w\\d]+",
+                                     "type" : "string"
+                                  },
+                                  "rate" : {
+                                     "description" : "Apply rate limiting to the interface",
+                                     "format_description" : "mbps",
+                                     "optional" : 1,
+                                     "type" : "number"
+                                  },
+                                  "tag" : {
+                                     "description" : "VLAN tag for this interface.",
+                                     "maximum" : 4094,
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "trunks" : {
+                                     "description" : "VLAN ids to pass through the interface",
+                                     "format_description" : "vlanid[;vlanid...]",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:\\d+(?:;\\d+)*)",
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "description" : "Network interface type.",
+                                     "enum" : [
+                                        "veth"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "onboot" : {
+                               "default" : 0,
+                               "description" : "Specifies whether a container will be started during system bootup.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "ostemplate" : {
+                               "description" : "The OS template or backup file.",
+                               "maxLength" : 255,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ostype" : {
+                               "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",
+                                  "opensuse",
+                                  "archlinux",
+                                  "alpine",
+                                  "gentoo",
+                                  "nixos",
+                                  "unmanaged"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "password" : {
+                               "description" : "Sets root password inside container.",
+                               "minLength" : 5,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "pool" : {
+                               "description" : "Add the VM to the specified pool.",
+                               "format" : "pve-poolid",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "protection" : {
+                               "default" : 0,
+                               "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "restore" : {
+                               "description" : "Mark this as restore task.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "rootfs" : {
+                               "description" : "Use volume as container root.",
+                               "format" : {
+                                  "acl" : {
+                                     "description" : "Explicitly enable or disable ACL support.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "mountoptions" : {
+                                     "description" : "Extra mount options for rootfs/mps.",
+                                     "format_description" : "opt[;opt...]",
+                                     "optional" : 1,
+                                     "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
+                                     "type" : "string"
+                                  },
+                                  "quota" : {
+                                     "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "replicate" : {
+                                     "default" : 1,
+                                     "description" : "Will include this volume to a storage replica job.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ro" : {
+                                     "description" : "Read-only mount point",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "shared" : {
+                                     "default" : 0,
+                                     "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!"
+                                  },
+                                  "size" : {
+                                     "description" : "Volume size (read only value).",
+                                     "format" : "disk-size",
+                                     "format_description" : "DiskSize",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "volume" : {
+                                     "default_key" : 1,
+                                     "description" : "Volume, device or directory to mount into the container.",
+                                     "format" : "pve-lxc-mp-string",
+                                     "format_description" : "volume",
+                                     "type" : "string"
+                                  }
+                               },
+                               "optional" : 1,
+                               "type" : "string",
+                               "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.",
+                               "format" : "dns-name-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ssh-public-keys" : {
+                               "description" : "Setup public SSH keys (one key per line, OpenSSH format).",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "start" : {
+                               "default" : 0,
+                               "description" : "Start the CT after its creation finished successfully.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "startup" : {
+                               "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.",
+                               "format" : "pve-startup-order",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] "
+                            },
+                            "storage" : {
+                               "default" : "local",
+                               "description" : "Default Storage.",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "swap" : {
+                               "default" : 512,
+                               "description" : "Amount of SWAP for the container in MB.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "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.",
+                               "optional" : 1,
+                               "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",
+                               "maximum" : 6,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 6)"
+                            },
+                            "unique" : {
+                               "description" : "Assign a unique random ethernet address.",
+                               "optional" : 1,
+                               "requires" : "restore",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "unprivileged" : {
+                               "default" : 0,
+                               "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "unused[n]" : {
+                               "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
+                               "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" : "[volume=]<volume>"
+                            },
+                            "vmid" : {
+                               "description" : "The (unique) ID of the VM.",
+                               "format" : "pve-vmid",
+                               "minimum" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore, it is enough if the user has 'VM.Backup' permission and the VM already exists. You also need 'Datastore.AllocateSpace' permissions on the storage.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/lxc",
+                "text" : "lxc"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "children" : [
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "ceph osd in",
+                                        "method" : "POST",
+                                        "name" : "in",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "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}/in",
+                                  "text" : "in"
+                               },
+                               {
+                                  "info" : {
+                                     "POST" : {
+                                        "allowtoken" : 1,
+                                        "description" : "ceph osd out",
+                                        "method" : "POST",
+                                        "name" : "out",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "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}/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" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Destroy Ceph Manager.",
+                                  "method" : "DELETE",
+                                  "name" : "destroymgr",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "id" : {
+                                           "description" : "The ID of the manager",
+                                           "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<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"
+                                        },
+                                        "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/mgr/{id}",
+                            "text" : "{id}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "MGR directory index.",
+                            "method" : "GET",
+                            "name" : "index",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<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 MGR"
+                                     },
+                                     "state" : {
+                                        "description" : "State of the MGR",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{name}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/ceph/mgr",
+                      "text" : "mgr"
+                   },
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Destroy Ceph Monitor and Manager.",
+                                  "method" : "DELETE",
+                                  "name" : "destroymon",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "monid" : {
+                                           "description" : "Monitor ID",
+                                           "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Create Ceph Monitor and Manager",
+                                  "method" : "POST",
+                                  "name" : "createmon",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "mon-address" : {
+                                           "description" : "Overwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph.",
+                                           "format" : "ip-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "monid" : {
+                                           "description" : "The ID for the monitor, when omitted the same as the nodename",
+                                           "maxLength" : 200,
+                                           "optional" : 1,
+                                           "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/ceph/mon/{monid}",
+                            "text" : "{monid}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get Ceph monitor list.",
+                            "method" : "GET",
+                            "name" : "listmon",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<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" : {
+                                        "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"
+                                     },
+                                     "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"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/ceph/fs",
+                      "text" : "fs"
+                   },
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "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_ecprofile" : {
+                                           "default" : 1,
+                                           "description" : "Remove the erasure code profile. Defaults to true, if applicable.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "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" : {
+                                           "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"
+                                        },
+                                        "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"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Change POOL settings",
+                                  "method" : "PUT",
+                                  "name" : "setpool",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "application" : {
+                                           "description" : "The application of the pool.",
+                                           "enum" : [
+                                              "rbd",
+                                              "cephfs",
+                                              "rgw"
+                                           ],
+                                           "optional" : 1,
+                                           "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>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/ceph/pools/{name}",
+                            "text" : "{name}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "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" : {
+                                     "application_metadata" : {
+                                        "optional" : 1,
+                                        "title" : "Associated Applications",
+                                        "type" : "object"
+                                     },
+                                     "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"
+                                     },
+                                     "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" : {
+                                        "enum" : [
+                                           "replicated",
+                                           "erasure",
+                                           "unknown"
+                                        ],
+                                        "title" : "Type",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{pool_name}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create Ceph pool",
+                            "method" : "POST",
+                            "name" : "createpool",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "add_storages" : {
+                                     "default" : "0; for erasure coded pools: 1",
+                                     "description" : "Configure VM and CT storage using the new pool.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "application" : {
+                                     "default" : "rbd",
+                                     "description" : "The application of the pool.",
+                                     "enum" : [
+                                        "rbd",
+                                        "cephfs",
+                                        "rgw"
+                                     ],
+                                     "optional" : 1,
+                                     "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>"
+                                  },
+                                  "erasure-coding" : {
+                                     "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
+                                     "format" : {
+                                        "device-class" : {
+                                           "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                           "format_description" : "class",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "failure-domain" : {
+                                           "default" : "host",
+                                           "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                           "format_description" : "domain",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "k" : {
+                                           "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                           "minimum" : 2,
+                                           "type" : "integer"
+                                        },
+                                        "m" : {
+                                           "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                           "minimum" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "profile" : {
+                                           "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                           "format_description" : "profile",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
+                                  },
+                                  "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>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "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>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/ceph/pools",
+                      "text" : "pools"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "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"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get Ceph configuration database.",
+                            "method" : "GET",
+                            "name" : "configdb",
+                            "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" : {
+                                     "can_update_at_runtime" : {
+                                        "type" : "boolean"
+                                     },
+                                     "level" : {
+                                        "type" : "string"
+                                     },
+                                     "mask" : {
+                                        "type" : "string"
+                                     },
+                                     "name" : {
+                                        "type" : "string"
+                                     },
+                                     "section" : {
+                                        "type" : "string"
+                                     },
+                                     "value" : {
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/configdb",
+                      "text" : "configdb"
+                   },
+                   {
+                      "info" : {
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create initial ceph default configuration and setup symlinks.",
+                            "method" : "POST",
+                            "name" : "init",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "cluster-network" : {
+                                     "description" : "Declare a separate cluster network, OSDs will routeheartbeat, object replication and recovery traffic over it",
+                                     "format" : "CIDR",
+                                     "maxLength" : 128,
+                                     "optional" : 1,
+                                     "requires" : "network",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "disable_cephx" : {
+                                     "default" : 0,
+                                     "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>"
+                                  },
+                                  "min_size" : {
+                                     "default" : 2,
+                                     "description" : "Minimum number of available replicas per object to allow I/O",
+                                     "maximum" : 7,
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (1 - 7)"
+                                  },
+                                  "network" : {
+                                     "description" : "Use specific network for all ceph related traffic",
+                                     "format" : "CIDR",
+                                     "maxLength" : 128,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "pg_bits" : {
+                                     "default" : 6,
+                                     "description" : "Placement group bits, used to specify the default number of placement groups.\n\nNOTE: 'osd pool default pg num' does not work for default pools.",
+                                     "maximum" : 14,
+                                     "minimum" : 6,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (6 - 14)"
+                                  },
+                                  "size" : {
+                                     "default" : 3,
+                                     "description" : "Targeted 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" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/init",
+                      "text" : "init"
+                   },
+                   {
+                      "info" : {
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Stop ceph services.",
+                            "method" : "POST",
+                            "name" : "stop",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "service" : {
+                                     "default" : "ceph.target",
+                                     "description" : "Ceph service name.",
+                                     "optional" : 1,
+                                     "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/stop",
+                      "text" : "stop"
+                   },
+                   {
+                      "info" : {
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Start ceph services.",
+                            "method" : "POST",
+                            "name" : "start",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "service" : {
+                                     "default" : "ceph.target",
+                                     "description" : "Ceph service name.",
+                                     "optional" : 1,
+                                     "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/start",
+                      "text" : "start"
+                   },
+                   {
+                      "info" : {
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Restart ceph services.",
+                            "method" : "POST",
+                            "name" : "restart",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "service" : {
+                                     "default" : "ceph.target",
+                                     "description" : "Ceph service name.",
+                                     "optional" : 1,
+                                     "pattern" : "(mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/restart",
+                      "text" : "restart"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get ceph status.",
+                            "method" : "GET",
+                            "name" : "status",
+                            "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"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/status",
+                      "text" : "status"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get OSD crush map",
+                            "method" : "GET",
+                            "name" : "crush",
+                            "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" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/crush",
+                      "text" : "crush"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Read ceph log",
+                            "method" : "GET",
+                            "name" : "log",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "limit" : {
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "start" : {
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Syslog"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "n" : {
+                                        "description" : "Line number",
+                                        "type" : "integer"
+                                     },
+                                     "t" : {
+                                        "description" : "Line text",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/log",
+                      "text" : "log"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List ceph rules.",
+                            "method" : "GET",
+                            "name" : "rules",
+                            "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" : {},
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{name}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/rules",
+                      "text" : "rules"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Heuristical check if it is safe to perform an action.",
+                            "method" : "GET",
+                            "name" : "cmd_safety",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "action" : {
+                                     "description" : "Action to check",
+                                     "enum" : [
+                                        "stop",
+                                        "destroy"
+                                     ],
+                                     "type" : "string"
+                                  },
+                                  "id" : {
+                                     "description" : "ID of the service",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "service" : {
+                                     "description" : "Service type",
+                                     "enum" : [
+                                        "osd",
+                                        "mon",
+                                        "mds"
+                                     ],
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.audit"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "properties" : {
+                                  "safe" : {
+                                     "description" : "If it is safe to run the command.",
+                                     "type" : "boolean"
+                                  },
+                                  "status" : {
+                                     "description" : "Status message given by Ceph.",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/ceph/cmd-safety",
+                      "text" : "cmd-safety"
+                   }
+                ],
+                "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
+                         ]
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/ceph",
+                "text" : "ceph"
+             },
+             {
+                "children" : [
+                   {
+                      "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"
+                                  },
+                                  "notes-template" : {
+                                     "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                                     "maxLength" : 1024,
+                                     "optional" : 1,
+                                     "requires" : "storage",
+                                     "type" : "string"
+                                  },
+                                  "performance" : {
+                                     "description" : "Other performance-related settings.",
+                                     "format" : "backup-performance",
+                                     "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"
+                                  },
+                                  "protected" : {
+                                     "description" : "If true, mark backup(s) as protected.",
+                                     "optional" : 1,
+                                     "requires" : "storage",
+                                     "type" : "boolean"
+                                  },
+                                  "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",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "volume" : {
+                                     "description" : "Volume identifier",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "description" : "The user needs 'VM.Backup' permissions on the backed up guest ID, and 'Datastore.AllocateSpace' on the backup storage.",
+                               "user" : "all"
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/vzdump/extractconfig",
+                      "text" : "extractconfig"
+                   }
+                ],
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create backup.",
+                      "method" : "POST",
+                      "name" : "vzdump",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "all" : {
+                               "default" : 0,
+                               "description" : "Backup all known guest systems on this host.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "bwlimit" : {
+                               "default" : 0,
+                               "description" : "Limit I/O bandwidth (KBytes per second).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "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",
+                               "typetext" : "<string>"
+                            },
+                            "exclude" : {
+                               "description" : "Exclude specified guest systems (assumes --all)",
+                               "format" : "pve-vmid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<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",
+                               "typetext" : "<string>"
+                            },
+                            "ionice" : {
+                               "default" : 7,
+                               "description" : "Set CFQ ionice priority.",
+                               "maximum" : 8,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 8)"
+                            },
+                            "lockwait" : {
+                               "default" : 180,
+                               "description" : "Maximal time to wait for the global lock (minutes).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "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",
+                               "typetext" : "<string>"
+                            },
+                            "maxfiles" : {
+                               "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "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",
+                               "typetext" : "<string>"
+                            },
+                            "notes-template" : {
+                               "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                               "maxLength" : 1024,
+                               "optional" : 1,
+                               "requires" : "storage",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "performance" : {
+                               "description" : "Other performance-related settings.",
+                               "format" : "backup-performance",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "[max-workers=<integer>]"
+                            },
+                            "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",
+                               "typetext" : "<integer>"
+                            },
+                            "pool" : {
+                               "description" : "Backup all known guest systems included in the specified pool.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "protected" : {
+                               "description" : "If true, mark backup(s) as protected.",
+                               "optional" : 1,
+                               "requires" : "storage",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "remove" : {
+                               "default" : 1,
+                               "description" : "Prune older backups according to 'prune-backups'.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "script" : {
+                               "description" : "Use specified hook script.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "stdexcludes" : {
+                               "default" : 1,
+                               "description" : "Exclude temporary files and logs.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "stdout" : {
+                               "description" : "Write tar to stdout, not to a file.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "stop" : {
+                               "default" : 0,
+                               "description" : "Stop running backup jobs on this host.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "stopwait" : {
+                               "default" : 10,
+                               "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "storage" : {
+                               "description" : "Store resulting file to this storage.",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "tmpdir" : {
+                               "description" : "Store temporary files to specified directory.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vmid" : {
+                               "description" : "The ID of the guest system you want to backup.",
+                               "format" : "pve-vmid-list",
+                               "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', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit', 'performance' and 'ionice' parameters are restricted to the 'root at pam' user.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/vzdump",
+                "text" : "vzdump"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read service properties",
+                                  "method" : "GET",
+                                  "name" : "service_state",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "service" : {
+                                           "description" : "Service ID",
+                                           "enum" : [
+                                              "chrony",
+                                              "corosync",
+                                              "cron",
+                                              "ksmtuned",
+                                              "postfix",
+                                              "pve-cluster",
+                                              "pve-firewall",
+                                              "pve-ha-crm",
+                                              "pve-ha-lrm",
+                                              "pvedaemon",
+                                              "pvefw-logger",
+                                              "pveproxy",
+                                              "pvescheduler",
+                                              "pvestatd",
+                                              "spiceproxy",
+                                              "sshd",
+                                              "syslog",
+                                              "systemd-journald",
+                                              "systemd-timesyncd"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/services/{service}/state",
+                            "text" : "state"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Start service.",
+                                  "method" : "POST",
+                                  "name" : "service_start",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "service" : {
+                                           "description" : "Service ID",
+                                           "enum" : [
+                                              "chrony",
+                                              "corosync",
+                                              "cron",
+                                              "ksmtuned",
+                                              "postfix",
+                                              "pve-cluster",
+                                              "pve-firewall",
+                                              "pve-ha-crm",
+                                              "pve-ha-lrm",
+                                              "pvedaemon",
+                                              "pvefw-logger",
+                                              "pveproxy",
+                                              "pvescheduler",
+                                              "pvestatd",
+                                              "spiceproxy",
+                                              "sshd",
+                                              "syslog",
+                                              "systemd-journald",
+                                              "systemd-timesyncd"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/services/{service}/start",
+                            "text" : "start"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Stop service.",
+                                  "method" : "POST",
+                                  "name" : "service_stop",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "service" : {
+                                           "description" : "Service ID",
+                                           "enum" : [
+                                              "chrony",
+                                              "corosync",
+                                              "cron",
+                                              "ksmtuned",
+                                              "postfix",
+                                              "pve-cluster",
+                                              "pve-firewall",
+                                              "pve-ha-crm",
+                                              "pve-ha-lrm",
+                                              "pvedaemon",
+                                              "pvefw-logger",
+                                              "pveproxy",
+                                              "pvescheduler",
+                                              "pvestatd",
+                                              "spiceproxy",
+                                              "sshd",
+                                              "syslog",
+                                              "systemd-journald",
+                                              "systemd-timesyncd"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/services/{service}/stop",
+                            "text" : "stop"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Hard restart service. Use reload if you want to reduce interruptions.",
+                                  "method" : "POST",
+                                  "name" : "service_restart",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "service" : {
+                                           "description" : "Service ID",
+                                           "enum" : [
+                                              "chrony",
+                                              "corosync",
+                                              "cron",
+                                              "ksmtuned",
+                                              "postfix",
+                                              "pve-cluster",
+                                              "pve-firewall",
+                                              "pve-ha-crm",
+                                              "pve-ha-lrm",
+                                              "pvedaemon",
+                                              "pvefw-logger",
+                                              "pveproxy",
+                                              "pvescheduler",
+                                              "pvestatd",
+                                              "spiceproxy",
+                                              "sshd",
+                                              "syslog",
+                                              "systemd-journald",
+                                              "systemd-timesyncd"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/services/{service}/restart",
+                            "text" : "restart"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Reload service. Falls back to restart if service cannot be reloaded.",
+                                  "method" : "POST",
+                                  "name" : "service_reload",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "service" : {
+                                           "description" : "Service ID",
+                                           "enum" : [
+                                              "chrony",
+                                              "corosync",
+                                              "cron",
+                                              "ksmtuned",
+                                              "postfix",
+                                              "pve-cluster",
+                                              "pve-firewall",
+                                              "pve-ha-crm",
+                                              "pve-ha-lrm",
+                                              "pvedaemon",
+                                              "pvefw-logger",
+                                              "pveproxy",
+                                              "pvescheduler",
+                                              "pvestatd",
+                                              "spiceproxy",
+                                              "sshd",
+                                              "syslog",
+                                              "systemd-journald",
+                                              "systemd-timesyncd"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/services/{service}/reload",
+                            "text" : "reload"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Directory index",
+                            "method" : "GET",
+                            "name" : "srvcmdidx",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "service" : {
+                                     "description" : "Service ID",
+                                     "enum" : [
+                                        "chrony",
+                                        "corosync",
+                                        "cron",
+                                        "ksmtuned",
+                                        "postfix",
+                                        "pve-cluster",
+                                        "pve-firewall",
+                                        "pve-ha-crm",
+                                        "pve-ha-lrm",
+                                        "pvedaemon",
+                                        "pvefw-logger",
+                                        "pveproxy",
+                                        "pvescheduler",
+                                        "pvestatd",
+                                        "spiceproxy",
+                                        "sshd",
+                                        "syslog",
+                                        "systemd-journald",
+                                        "systemd-timesyncd"
+                                     ],
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "subdir" : {
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{subdir}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/services/{service}",
+                      "text" : "{service}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Service list.",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{service}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/services",
+                "text" : "services"
+             },
+             {
+                "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Update subscription info.",
+                      "method" : "POST",
+                      "name" : "update",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "force" : {
+                               "default" : 0,
+                               "description" : "Always connect to server, even if we have up to date info inside local cache.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Set subscription key.",
+                      "method" : "PUT",
+                      "name" : "set",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "key" : {
+                               "description" : "Proxmox VE subscription key",
+                               "maxLength" : 32,
+                               "pattern" : "pve([1248])([cbsp])-[0-9a-f]{10}",
+                               "type" : "string"
+                            },
+                            "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"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/subscription",
+                "text" : "subscription"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Delete network device configuration",
+                            "method" : "DELETE",
+                            "name" : "delete_network",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "iface" : {
+                                     "description" : "Network interface name.",
+                                     "format" : "pve-iface",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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 network device configuration",
+                            "method" : "GET",
+                            "name" : "network_config",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "iface" : {
+                                     "description" : "Network interface name.",
+                                     "format" : "pve-iface",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "properties" : {
+                                  "method" : {
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Update network device configuration",
+                            "method" : "PUT",
+                            "name" : "update_network",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "address" : {
+                                     "description" : "IP address.",
+                                     "format" : "ipv4",
+                                     "optional" : 1,
+                                     "requires" : "netmask",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "address6" : {
+                                     "description" : "IP address.",
+                                     "format" : "ipv6",
+                                     "optional" : 1,
+                                     "requires" : "netmask6",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "autostart" : {
+                                     "description" : "Automatically start interface on boot.",
+                                     "optional" : 1,
+                                     "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" : [
+                                        "balance-rr",
+                                        "active-backup",
+                                        "balance-xor",
+                                        "broadcast",
+                                        "802.3ad",
+                                        "balance-tlb",
+                                        "balance-alb",
+                                        "balance-slb",
+                                        "lacp-balance-slb",
+                                        "lacp-balance-tcp"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "bond_xmit_hash_policy" : {
+                                     "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
+                                     "enum" : [
+                                        "layer2",
+                                        "layer2+3",
+                                        "layer3+4"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "bridge_ports" : {
+                                     "description" : "Specify the interfaces you want to add to your bridge.",
+                                     "format" : "pve-iface-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "bridge_vlan_aware" : {
+                                     "description" : "Enable bridge vlan support.",
+                                     "optional" : 1,
+                                     "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>"
+                                  },
+                                  "comments6" : {
+                                     "description" : "Comments",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "delete" : {
+                                     "description" : "A list of settings you want to delete.",
+                                     "format" : "pve-configid-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "gateway" : {
+                                     "description" : "Default gateway address.",
+                                     "format" : "ipv4",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "gateway6" : {
+                                     "description" : "Default ipv6 gateway address.",
+                                     "format" : "ipv6",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "iface" : {
+                                     "description" : "Network interface name.",
+                                     "format" : "pve-iface",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "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",
+                                     "optional" : 1,
+                                     "requires" : "address",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "netmask6" : {
+                                     "description" : "Network mask.",
+                                     "maximum" : 128,
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "requires" : "address6",
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - 128)"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "ovs_bonds" : {
+                                     "description" : "Specify the interfaces used by the bonding device.",
+                                     "format" : "pve-iface-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "ovs_bridge" : {
+                                     "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
+                                     "format" : "pve-iface",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "ovs_options" : {
+                                     "description" : "OVS interface options.",
+                                     "maxLength" : 1024,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "ovs_ports" : {
+                                     "description" : "Specify the interfaces you want to add to your bridge.",
+                                     "format" : "pve-iface-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "ovs_tag" : {
+                                     "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
+                                     "maximum" : 4094,
+                                     "minimum" : 1,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (1 - 4094)"
+                                  },
+                                  "slaves" : {
+                                     "description" : "Specify the interfaces used by the bonding device.",
+                                     "format" : "pve-iface-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "type" : {
+                                     "description" : "Network interface type",
+                                     "enum" : [
+                                        "bridge",
+                                        "bond",
+                                        "eth",
+                                        "alias",
+                                        "vlan",
+                                        "OVSBridge",
+                                        "OVSBond",
+                                        "OVSPort",
+                                        "OVSIntPort",
+                                        "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>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/network/{iface}",
+                      "text" : "{iface}"
+                   }
+                ],
+                "info" : {
+                   "DELETE" : {
+                      "allowtoken" : 1,
+                      "description" : "Revert network configuration changes.",
+                      "method" : "DELETE",
+                      "name" : "revert_network_changes",
+                      "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" : "List available networks",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "type" : {
+                               "description" : "Only list specific interface types.",
+                               "enum" : [
+                                  "bridge",
+                                  "bond",
+                                  "eth",
+                                  "alias",
+                                  "vlan",
+                                  "OVSBridge",
+                                  "OVSBond",
+                                  "OVSPort",
+                                  "OVSIntPort",
+                                  "any_bridge"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{iface}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Create network device configuration",
+                      "method" : "POST",
+                      "name" : "create_network",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "address" : {
+                               "description" : "IP address.",
+                               "format" : "ipv4",
+                               "optional" : 1,
+                               "requires" : "netmask",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "address6" : {
+                               "description" : "IP address.",
+                               "format" : "ipv6",
+                               "optional" : 1,
+                               "requires" : "netmask6",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "autostart" : {
+                               "description" : "Automatically start interface on boot.",
+                               "optional" : 1,
+                               "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" : [
+                                  "balance-rr",
+                                  "active-backup",
+                                  "balance-xor",
+                                  "broadcast",
+                                  "802.3ad",
+                                  "balance-tlb",
+                                  "balance-alb",
+                                  "balance-slb",
+                                  "lacp-balance-slb",
+                                  "lacp-balance-tcp"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "bond_xmit_hash_policy" : {
+                               "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
+                               "enum" : [
+                                  "layer2",
+                                  "layer2+3",
+                                  "layer3+4"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "bridge_ports" : {
+                               "description" : "Specify the interfaces you want to add to your bridge.",
+                               "format" : "pve-iface-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "bridge_vlan_aware" : {
+                               "description" : "Enable bridge vlan support.",
+                               "optional" : 1,
+                               "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>"
+                            },
+                            "comments6" : {
+                               "description" : "Comments",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "gateway" : {
+                               "description" : "Default gateway address.",
+                               "format" : "ipv4",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "gateway6" : {
+                               "description" : "Default ipv6 gateway address.",
+                               "format" : "ipv6",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "iface" : {
+                               "description" : "Network interface name.",
+                               "format" : "pve-iface",
+                               "maxLength" : 20,
+                               "minLength" : 2,
+                               "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",
+                               "optional" : 1,
+                               "requires" : "address",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "netmask6" : {
+                               "description" : "Network mask.",
+                               "maximum" : 128,
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "requires" : "address6",
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - 128)"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ovs_bonds" : {
+                               "description" : "Specify the interfaces used by the bonding device.",
+                               "format" : "pve-iface-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ovs_bridge" : {
+                               "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
+                               "format" : "pve-iface",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ovs_options" : {
+                               "description" : "OVS interface options.",
+                               "maxLength" : 1024,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ovs_ports" : {
+                               "description" : "Specify the interfaces you want to add to your bridge.",
+                               "format" : "pve-iface-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "ovs_tag" : {
+                               "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
+                               "maximum" : 4094,
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - 4094)"
+                            },
+                            "slaves" : {
+                               "description" : "Specify the interfaces used by the bonding device.",
+                               "format" : "pve-iface-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "type" : {
+                               "description" : "Network interface type",
+                               "enum" : [
+                                  "bridge",
+                                  "bond",
+                                  "eth",
+                                  "alias",
+                                  "vlan",
+                                  "OVSBridge",
+                                  "OVSBond",
+                                  "OVSPort",
+                                  "OVSIntPort",
+                                  "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>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Reload network configuration",
+                      "method" : "PUT",
+                      "name" : "reload_network_config",
+                      "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" : "string"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/network",
+                "text" : "network"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read task log.",
+                                  "method" : "GET",
+                                  "name" : "read_task_log",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "limit" : {
+                                           "default" : 50,
+                                           "description" : "The maximum amount of lines that should be printed.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "start" : {
+                                           "default" : 0,
+                                           "description" : "The line number to start printing at.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "upid" : {
+                                           "description" : "The task's unique ID.",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they aren't the owner of the task.",
+                                     "user" : "all"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "n" : {
+                                              "description" : "Line number",
+                                              "type" : "integer"
+                                           },
+                                           "t" : {
+                                              "description" : "Line text",
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/tasks/{upid}/log",
+                            "text" : "log"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read task status.",
+                                  "method" : "GET",
+                                  "name" : "read_task_status",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "upid" : {
+                                           "description" : "The task's unique ID.",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they are not the owner of the task.",
+                                     "user" : "all"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "exitstatus" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "id" : {
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "type" : "string"
+                                        },
+                                        "pid" : {
+                                           "type" : "integer"
+                                        },
+                                        "starttime" : {
+                                           "type" : "number"
+                                        },
+                                        "status" : {
+                                           "enum" : [
+                                              "running",
+                                              "stopped"
+                                           ],
+                                           "type" : "string"
+                                        },
+                                        "type" : {
+                                           "type" : "string"
+                                        },
+                                        "upid" : {
+                                           "type" : "string"
+                                        },
+                                        "user" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/tasks/{upid}/status",
+                            "text" : "status"
+                         }
+                      ],
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "Stop a task.",
+                            "method" : "DELETE",
+                            "name" : "stop_task",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "upid" : {
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "description" : "The user needs 'Sys.Modify' permissions on '/nodes/<node>' if they aren't the owner of the task.",
+                               "user" : "all"
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "",
+                            "method" : "GET",
+                            "name" : "upid_index",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "upid" : {
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "user" : "all"
+                            },
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {},
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{name}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/tasks/{upid}",
+                      "text" : "{upid}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read task list for one node (finished tasks).",
+                      "method" : "GET",
+                      "name" : "node_tasks",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "errors" : {
+                               "default" : 0,
+                               "description" : "Only list tasks with a status of ERROR.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "limit" : {
+                               "default" : 50,
+                               "description" : "Only list this amount of tasks.",
+                               "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" : "Only list tasks since this UNIX epoch.",
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer>"
+                            },
+                            "source" : {
+                               "default" : "archive",
+                               "description" : "List archived, active or all tasks.",
+                               "enum" : [
+                                  "archive",
+                                  "active",
+                                  "all"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "start" : {
+                               "default" : 0,
+                               "description" : "List tasks beginning from this offset.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "statusfilter" : {
+                               "description" : "List of Task States that should be returned.",
+                               "format" : "pve-task-status-type-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "typefilter" : {
+                               "description" : "Only list tasks of this type (e.g., vzstart, vzdump).",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "until" : {
+                               "description" : "Only list tasks until this UNIX epoch.",
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer>"
+                            },
+                            "userfilter" : {
+                               "description" : "Only list tasks from this user.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vmid" : {
+                               "description" : "Only list tasks for this VM.",
+                               "format" : "pve-vmid",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "List task associated with the current user, or all task the user has 'Sys.Audit' permissions on /nodes/<node> (the <node> the task runs on).",
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "endtime" : {
+                                  "optional" : 1,
+                                  "title" : "Endtime",
+                                  "type" : "integer"
+                               },
+                               "id" : {
+                                  "title" : "ID",
+                                  "type" : "string"
+                               },
+                               "node" : {
+                                  "title" : "Node",
+                                  "type" : "string"
+                               },
+                               "pid" : {
+                                  "title" : "PID",
+                                  "type" : "integer"
+                               },
+                               "pstart" : {
+                                  "type" : "integer"
+                               },
+                               "starttime" : {
+                                  "title" : "Starttime",
+                                  "type" : "integer"
+                               },
+                               "status" : {
+                                  "optional" : 1,
+                                  "title" : "Status",
+                                  "type" : "string"
+                               },
+                               "type" : {
+                                  "title" : "Type",
+                                  "type" : "string"
+                               },
+                               "upid" : {
+                                  "title" : "UPID",
+                                  "type" : "string"
+                               },
+                               "user" : {
+                                  "title" : "User",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{upid}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/tasks",
+                "text" : "tasks"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan remote NFS server.",
+                            "method" : "GET",
+                            "name" : "nfsscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "server" : {
+                                     "description" : "The server address (name or IP).",
+                                     "format" : "pve-storage-server",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "options" : {
+                                        "description" : "NFS export options.",
+                                        "type" : "string"
+                                     },
+                                     "path" : {
+                                        "description" : "The exported path.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/nfs",
+                      "text" : "nfs"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan remote CIFS server.",
+                            "method" : "GET",
+                            "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>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "description" : {
+                                        "description" : "Descriptive text from server.",
+                                        "type" : "string"
+                                     },
+                                     "share" : {
+                                        "description" : "The cifs share name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/cifs",
+                      "text" : "cifs"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan remote Proxmox Backup Server.",
+                            "method" : "GET",
+                            "name" : "pbsscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "fingerprint" : {
+                                     "description" : "Certificate SHA 256 fingerprint.",
+                                     "optional" : 1,
+                                     "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                     "type" : "string"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "password" : {
+                                     "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",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "username" : {
+                                     "description" : "User-name or API token-ID.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "comment" : {
+                                        "description" : "Comment from server.",
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "store" : {
+                                        "description" : "The datastore name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/pbs",
+                      "text" : "pbs"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan remote GlusterFS server.",
+                            "method" : "GET",
+                            "name" : "glusterfsscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "server" : {
+                                     "description" : "The server address (name or IP).",
+                                     "format" : "pve-storage-server",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "volname" : {
+                                        "description" : "The volume name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/glusterfs",
+                      "text" : "glusterfs"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan remote iSCSI server.",
+                            "method" : "GET",
+                            "name" : "iscsiscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "portal" : {
+                                     "description" : "The iSCSI portal (IP or DNS name with optional port).",
+                                     "format" : "pve-storage-portal-dns",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "portal" : {
+                                        "description" : "The iSCSI portal name.",
+                                        "type" : "string"
+                                     },
+                                     "target" : {
+                                        "description" : "The iSCSI target name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/iscsi",
+                      "text" : "iscsi"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List local LVM volume groups.",
+                            "method" : "GET",
+                            "name" : "lvmscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "vg" : {
+                                        "description" : "The LVM logical volume group name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/lvm",
+                      "text" : "lvm"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List local LVM Thin Pools.",
+                            "method" : "GET",
+                            "name" : "lvmthinscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "vg" : {
+                                     "maxLength" : 100,
+                                     "pattern" : "[a-zA-Z0-9\\.\\+\\_][a-zA-Z0-9\\.\\+\\_\\-]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "lv" : {
+                                        "description" : "The LVM Thin Pool name (LVM logical volume).",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/lvmthin",
+                      "text" : "lvmthin"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Scan zfs pool list on local node.",
+                            "method" : "GET",
+                            "name" : "zfsscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage",
+                                  [
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "pool" : {
+                                        "description" : "ZFS pool name.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/scan/zfs",
+                      "text" : "zfs"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Index of available scan methods",
+                      "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" : {
+                               "method" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{method}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/scan",
+                "text" : "scan"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "children" : [
+                               {
+                                  "info" : {
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "List mediated device types for given PCI device.",
+                                        "method" : "GET",
+                                        "name" : "mdevscan",
+                                        "parameters" : {
+                                           "additionalProperties" : 0,
+                                           "properties" : {
+                                              "node" : {
+                                                 "description" : "The cluster node name.",
+                                                 "format" : "pve-node",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "pciid" : {
+                                                 "description" : "The PCI ID to list the mdev types for.",
+                                                 "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]",
+                                                 "type" : "string"
+                                              }
+                                           }
+                                        },
+                                        "permissions" : {
+                                           "check" : [
+                                              "perm",
+                                              "/",
+                                              [
+                                                 "Sys.Modify"
+                                              ]
+                                           ]
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "items" : {
+                                              "properties" : {
+                                                 "available" : {
+                                                    "description" : "The number of still available instances of this type.",
+                                                    "type" : "integer"
+                                                 },
+                                                 "description" : {
+                                                    "type" : "string"
+                                                 },
+                                                 "type" : {
+                                                    "description" : "The name of the mdev type.",
+                                                    "type" : "string"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        }
+                                     }
+                                  },
+                                  "leaf" : 1,
+                                  "path" : "/nodes/{node}/hardware/pci/{pciid}/mdev",
+                                  "text" : "mdev"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Index of available pci methods",
+                                  "method" : "GET",
+                                  "name" : "pciindex",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "pciid" : {
+                                           "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]",
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "user" : "all"
+                                  },
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "method" : {
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{method}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "path" : "/nodes/{node}/hardware/pci/{pciid}",
+                            "text" : "{pciid}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List local PCI devices.",
+                            "method" : "GET",
+                            "name" : "pciscan",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "pci-class-blacklist" : {
+                                     "default" : "05;06;0b",
+                                     "description" : "A list of blacklisted PCI classes, which will not be returned. Following are filtered by default: Memory Controller (05), Bridge (06) and Processor (0b).",
+                                     "format" : "string-list",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "verbose" : {
+                                     "default" : 1,
+                                     "description" : "If disabled, does only print the PCI IDs. Otherwise, additional information like vendor and device will be returned.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "class" : {
+                                        "description" : "The PCI Class of the device.",
+                                        "type" : "string"
+                                     },
+                                     "device" : {
+                                        "description" : "The Device ID.",
+                                        "type" : "string"
+                                     },
+                                     "device_name" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "id" : {
+                                        "description" : "The PCI ID.",
+                                        "type" : "string"
+                                     },
+                                     "iommugroup" : {
+                                        "description" : "The IOMMU group in which the device is in. If no IOMMU group is detected, it is set to -1.",
+                                        "type" : "integer"
+                                     },
+                                     "mdev" : {
+                                        "description" : "If set, marks that the device is capable of creating mediated devices.",
+                                        "optional" : 1,
+                                        "type" : "boolean"
+                                     },
+                                     "subsystem_device" : {
+                                        "description" : "The Subsystem Device ID.",
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "subsystem_device_name" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "subsystem_vendor" : {
+                                        "description" : "The Subsystem Vendor ID.",
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "subsystem_vendor_name" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "vendor" : {
+                                        "description" : "The Vendor ID.",
+                                        "type" : "string"
+                                     },
+                                     "vendor_name" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{id}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "type" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{type}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/hardware",
+                "text" : "hardware"
+             },
+             {
+                "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. Backups that are protected or don't use the standard naming scheme are not removed.",
+                                              "enum" : [
+                                                 "keep",
+                                                 "remove",
+                                                 "protected",
+                                                 "renamed"
+                                              ],
+                                              "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",
+                                                 "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 'Datastore.Allocate' privilege on the storage (or 'Datastore.AllocateSpace' for backup volumes if you have VM.Backup privilege on the VM).",
+                                           "user" : "all"
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "returns" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "GET" : {
+                                        "allowtoken" : 1,
+                                        "description" : "Get volume attributes",
+                                        "method" : "GET",
+                                        "name" : "info",
+                                        "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>"
+                                              },
+                                              "volume" : {
+                                                 "description" : "Volume identifier",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              }
+                                           }
+                                        },
+                                        "permissions" : {
+                                           "description" : "You need read access for the volume.",
+                                           "user" : "all"
+                                        },
+                                        "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"
+                                              },
+                                              "protected" : {
+                                                 "description" : "Protection status. Currently only supported for backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean"
+                                              },
+                                              "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",
+                                        "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>"
+                                              },
+                                              "target" : {
+                                                 "description" : "Target volume identifier",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "target_node" : {
+                                                 "description" : "Target node. Default is local node.",
+                                                 "format" : "pve-node",
+                                                 "optional" : 1,
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              },
+                                              "volume" : {
+                                                 "description" : "Source volume identifier",
+                                                 "type" : "string",
+                                                 "typetext" : "<string>"
+                                              }
+                                           }
+                                        },
+                                        "protected" : 1,
+                                        "proxyto" : "node",
+                                        "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>"
+                                              },
+                                              "protected" : {
+                                                 "description" : "Protection status. Currently only supported for backups.",
+                                                 "optional" : 1,
+                                                 "type" : "boolean",
+                                                 "typetext" : "<boolean>"
+                                              },
+                                              "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,
+                                  "path" : "/nodes/{node}/storage/{storage}/content/{volume}",
+                                  "text" : "{volume}"
+                               }
+                            ],
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "List storage content.",
+                                  "method" : "GET",
+                                  "name" : "index",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "content" : {
+                                           "description" : "Only list content of this type.",
+                                           "format" : "pve-storage-content",
+                                           "optional" : 1,
+                                           "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>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "Only list images for this VM",
+                                           "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 (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" : "string"
+                                           },
+                                           "protected" : {
+                                              "description" : "Protection status. Currently only supported for backups.",
+                                              "optional" : 1,
+                                              "type" : "boolean"
+                                           },
+                                           "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.",
+                                              "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,
+                                              "type" : "integer"
+                                           },
+                                           "volid" : {
+                                              "description" : "Volume identifier.",
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "links" : [
+                                        {
+                                           "href" : "{volid}",
+                                           "rel" : "child"
+                                        }
+                                     ],
+                                     "type" : "array"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Allocate disk images.",
+                                  "method" : "POST",
+                                  "name" : "create",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "filename" : {
+                                           "description" : "The name of the file to create.",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "format" : {
+                                           "enum" : [
+                                              "raw",
+                                              "qcow2",
+                                              "subvol"
+                                           ],
+                                           "optional" : 1,
+                                           "requires" : "size",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "size" : {
+                                           "description" : "Size in kilobyte (1024 bytes). Optional suffixes 'M' (megabyte, 1024K) and 'G' (gigabyte, 1024M)",
+                                           "pattern" : "\\d+[MG]?",
+                                           "type" : "string"
+                                        },
+                                        "storage" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "vmid" : {
+                                           "description" : "Specify owner VM",
+                                           "format" : "pve-vmid",
+                                           "minimum" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (1 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage/{storage}",
+                                        [
+                                           "Datastore.AllocateSpace"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "description" : "Volume identifier",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 0,
+                            "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",
+                                  "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",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage/{storage}",
+                                        [
+                                           "Datastore.Audit",
+                                           "Datastore.AllocateSpace"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/storage/{storage}/status",
+                            "text" : "status"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read storage RRD statistics (returns PNG).",
+                                  "method" : "GET",
+                                  "name" : "rrd",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ds" : {
+                                           "description" : "The list of datasources you want to display.",
+                                           "format" : "pve-configid-list",
+                                           "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>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage/{storage}",
+                                        [
+                                           "Datastore.Audit",
+                                           "Datastore.AllocateSpace"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "filename" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/storage/{storage}/rrd",
+                            "text" : "rrd"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read storage RRD statistics.",
+                                  "method" : "GET",
+                                  "name" : "rrddata",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cf" : {
+                                           "description" : "The RRD consolidation function",
+                                           "enum" : [
+                                              "AVERAGE",
+                                              "MAX"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "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>"
+                                        },
+                                        "timeframe" : {
+                                           "description" : "Specify the time frame you are interested in.",
+                                           "enum" : [
+                                              "hour",
+                                              "day",
+                                              "week",
+                                              "month",
+                                              "year"
+                                           ],
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage/{storage}",
+                                        [
+                                           "Datastore.Audit",
+                                           "Datastore.AllocateSpace"
+                                        ],
+                                        "any",
+                                        1
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {},
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/storage/{storage}/rrddata",
+                            "text" : "rrddata"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Upload templates and ISO images.",
+                                  "method" : "POST",
+                                  "name" : "upload",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "checksum" : {
+                                           "description" : "The expected checksum of the file.",
+                                           "optional" : 1,
+                                           "requires" : "checksum-algorithm",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "checksum-algorithm" : {
+                                           "description" : "The algorithm to calculate the checksum of the file.",
+                                           "enum" : [
+                                              "md5",
+                                              "sha1",
+                                              "sha224",
+                                              "sha256",
+                                              "sha384",
+                                              "sha512"
+                                           ],
+                                           "optional" : 1,
+                                           "requires" : "checksum",
+                                           "type" : "string"
+                                        },
+                                        "content" : {
+                                           "description" : "Content type.",
+                                           "enum" : [
+                                              "iso",
+                                              "vztmpl"
+                                           ],
+                                           "format" : "pve-storage-content",
+                                           "type" : "string"
+                                        },
+                                        "filename" : {
+                                           "description" : "The name of the file to create. Caution: This will be normalized!",
+                                           "maxLength" : 255,
+                                           "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>"
+                                        },
+                                        "tmpfilename" : {
+                                           "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>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage/{storage}",
+                                        [
+                                           "Datastore.AllocateTemplate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/storage/{storage}/upload",
+                            "text" : "upload"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Download templates and ISO images by using an URL.",
+                                  "method" : "POST",
+                                  "name" : "download_url",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "checksum" : {
+                                           "description" : "The expected checksum of the file.",
+                                           "optional" : 1,
+                                           "requires" : "checksum-algorithm",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "checksum-algorithm" : {
+                                           "description" : "The algorithm to calculate the checksum of the file.",
+                                           "enum" : [
+                                              "md5",
+                                              "sha1",
+                                              "sha224",
+                                              "sha256",
+                                              "sha384",
+                                              "sha512"
+                                           ],
+                                           "optional" : 1,
+                                           "requires" : "checksum",
+                                           "type" : "string"
+                                        },
+                                        "content" : {
+                                           "description" : "Content type.",
+                                           "enum" : [
+                                              "iso",
+                                              "vztmpl"
+                                           ],
+                                           "format" : "pve-storage-content",
+                                           "type" : "string"
+                                        },
+                                        "filename" : {
+                                           "description" : "The name of the file to create. Caution: This will be normalized!",
+                                           "maxLength" : 255,
+                                           "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>"
+                                        },
+                                        "url" : {
+                                           "description" : "The URL to download the file from.",
+                                           "pattern" : "https?://.*",
+                                           "type" : "string"
+                                        },
+                                        "verify-certificates" : {
+                                           "default" : 1,
+                                           "description" : "If false, no SSL/TLS certificates will be verified.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "and",
+                                        [
+                                           "perm",
+                                           "/storage/{storage}",
+                                           [
+                                              "Datastore.AllocateTemplate"
+                                           ]
+                                        ],
+                                        [
+                                           "perm",
+                                           "/",
+                                           [
+                                              "Sys.Audit",
+                                              "Sys.Modify"
+                                           ]
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/storage/{storage}/download-url",
+                            "text" : "download-url"
+                         }
+                      ],
+                      "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>"
+                                  },
+                                  "storage" : {
+                                     "description" : "The storage identifier.",
+                                     "format" : "pve-storage-id",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/storage/{storage}",
+                                  [
+                                     "Datastore.Audit",
+                                     "Datastore.AllocateSpace"
+                                  ],
+                                  "any",
+                                  1
+                               ]
+                            },
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "subdir" : {
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{subdir}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/storage/{storage}",
+                      "text" : "{storage}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get status for all datastores.",
+                      "method" : "GET",
+                      "name" : "index",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "content" : {
+                               "description" : "Only list stores which support this content type.",
+                               "format" : "pve-storage-content-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "enabled" : {
+                               "default" : 0,
+                               "description" : "Only list stores which are enabled (not disabled in config).",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "format" : {
+                               "default" : 0,
+                               "description" : "Include information about formats",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "storage" : {
+                               "description" : "Only list status for  specified storage",
+                               "format" : "pve-storage-id",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "target" : {
+                               "description" : "If target is different to 'node', we only lists shared storages which content is accessible on this 'node' and the specified 'target' node.",
+                               "format" : "pve-node",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/<storage>'",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "active" : {
+                                  "description" : "Set when storage is accessible.",
+                                  "optional" : 1,
+                                  "type" : "boolean"
+                               },
+                               "avail" : {
+                                  "description" : "Available storage space in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "content" : {
+                                  "description" : "Allowed storage content types.",
+                                  "format" : "pve-storage-content-list",
+                                  "type" : "string"
+                               },
+                               "enabled" : {
+                                  "description" : "Set when storage is enabled (not disabled).",
+                                  "optional" : 1,
+                                  "type" : "boolean"
+                               },
+                               "shared" : {
+                                  "description" : "Shared flag from storage configuration.",
+                                  "optional" : 1,
+                                  "type" : "boolean"
+                               },
+                               "storage" : {
+                                  "description" : "The storage identifier.",
+                                  "format" : "pve-storage-id",
+                                  "type" : "string"
+                               },
+                               "total" : {
+                                  "description" : "Total storage space in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "type" : {
+                                  "description" : "Storage type.",
+                                  "type" : "string"
+                               },
+                               "used" : {
+                                  "description" : "Used storage space in bytes.",
+                                  "optional" : 1,
+                                  "renderer" : "bytes",
+                                  "type" : "integer"
+                               },
+                               "used_fraction" : {
+                                  "description" : "Used fraction (used/total).",
+                                  "optional" : 1,
+                                  "renderer" : "fraction_as_percentage",
+                                  "type" : "number"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{storage}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/storage",
+                "text" : "storage"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Remove an LVM Volume Group.",
+                                  "method" : "DELETE",
+                                  "name" : "delete",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cleanup-config" : {
+                                           "default" : 0,
+                                           "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "cleanup-disks" : {
+                                           "default" : 0,
+                                           "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "name" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify",
+                                           "Datastore.Allocate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/disks/lvm/{name}",
+                            "text" : "{name}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List LVM Volume Groups",
+                            "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" : {
+                               "properties" : {
+                                  "children" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "children" : {
+                                              "description" : "The underlying physical volumes",
+                                              "items" : {
+                                                 "properties" : {
+                                                    "free" : {
+                                                       "description" : "The free bytes in the physical volume",
+                                                       "type" : "integer"
+                                                    },
+                                                    "leaf" : {
+                                                       "type" : "boolean"
+                                                    },
+                                                    "name" : {
+                                                       "description" : "The name of the physical volume",
+                                                       "type" : "string"
+                                                    },
+                                                    "size" : {
+                                                       "description" : "The size of the physical volume in bytes",
+                                                       "type" : "integer"
+                                                    }
+                                                 },
+                                                 "type" : "object"
+                                              },
+                                              "optional" : 1,
+                                              "type" : "array"
+                                           },
+                                           "free" : {
+                                              "description" : "The free bytes in the volume group",
+                                              "type" : "integer"
+                                           },
+                                           "leaf" : {
+                                              "type" : "boolean"
+                                           },
+                                           "name" : {
+                                              "description" : "The name of the volume group",
+                                              "type" : "string"
+                                           },
+                                           "size" : {
+                                              "description" : "The size of the volume group in bytes",
+                                              "type" : "integer"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  },
+                                  "leaf" : {
+                                     "type" : "boolean"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create an LVM Volume Group",
+                            "method" : "POST",
+                            "name" : "create",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "add_storage" : {
+                                     "default" : 0,
+                                     "description" : "Configure storage using the Volume Group",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "device" : {
+                                     "description" : "The block device you want to create the volume group on",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "name" : {
+                                     "description" : "The storage identifier.",
+                                     "format" : "pve-storage-id",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify",
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/disks/lvm",
+                      "text" : "lvm"
+                   },
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Remove an LVM thin pool.",
+                                  "method" : "DELETE",
+                                  "name" : "delete",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cleanup-config" : {
+                                           "default" : 0,
+                                           "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "cleanup-disks" : {
+                                           "default" : 0,
+                                           "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "name" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "volume-group" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify",
+                                           "Datastore.Allocate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/disks/lvmthin/{name}",
+                            "text" : "{name}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List LVM thinpools",
+                            "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" : {
+                                     "lv" : {
+                                        "description" : "The name of the thinpool.",
+                                        "type" : "string"
+                                     },
+                                     "lv_size" : {
+                                        "description" : "The size of the thinpool in bytes.",
+                                        "type" : "integer"
+                                     },
+                                     "metadata_size" : {
+                                        "description" : "The size of the metadata lv in bytes.",
+                                        "type" : "integer"
+                                     },
+                                     "metadata_used" : {
+                                        "description" : "The used bytes of the metadata lv.",
+                                        "type" : "integer"
+                                     },
+                                     "used" : {
+                                        "description" : "The used bytes of the thinpool.",
+                                        "type" : "integer"
+                                     },
+                                     "vg" : {
+                                        "description" : "The associated volume group.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create an LVM thinpool",
+                            "method" : "POST",
+                            "name" : "create",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "add_storage" : {
+                                     "default" : 0,
+                                     "description" : "Configure storage using the thinpool.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "device" : {
+                                     "description" : "The block device you want to create the thinpool on.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "name" : {
+                                     "description" : "The storage identifier.",
+                                     "format" : "pve-storage-id",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify",
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/disks/lvmthin",
+                      "text" : "lvmthin"
+                   },
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Unmounts the storage and removes the mount unit.",
+                                  "method" : "DELETE",
+                                  "name" : "delete",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cleanup-config" : {
+                                           "default" : 0,
+                                           "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "cleanup-disks" : {
+                                           "default" : 0,
+                                           "description" : "Also wipe disk so it can be repurposed afterwards.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "name" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify",
+                                           "Datastore.Allocate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/disks/directory/{name}",
+                            "text" : "{name}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "PVE Managed Directory storages.",
+                            "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" : {
+                                     "device" : {
+                                        "description" : "The mounted device.",
+                                        "type" : "string"
+                                     },
+                                     "options" : {
+                                        "description" : "The mount options.",
+                                        "type" : "string"
+                                     },
+                                     "path" : {
+                                        "description" : "The mount path.",
+                                        "type" : "string"
+                                     },
+                                     "type" : {
+                                        "description" : "The filesystem type.",
+                                        "type" : "string"
+                                     },
+                                     "unitfile" : {
+                                        "description" : "The path of the mount unit.",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create a Filesystem on an unused disk. Will be mounted under '/mnt/pve/NAME'.",
+                            "method" : "POST",
+                            "name" : "create",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "add_storage" : {
+                                     "default" : 0,
+                                     "description" : "Configure storage using the directory.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "device" : {
+                                     "description" : "The block device you want to create the filesystem on.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "filesystem" : {
+                                     "default" : "ext4",
+                                     "description" : "The desired filesystem.",
+                                     "enum" : [
+                                        "ext4",
+                                        "xfs"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "name" : {
+                                     "description" : "The storage identifier.",
+                                     "format" : "pve-storage-id",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify",
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/disks/directory",
+                      "text" : "directory"
+                   },
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Destroy a ZFS pool.",
+                                  "method" : "DELETE",
+                                  "name" : "delete",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "cleanup-config" : {
+                                           "default" : 0,
+                                           "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "cleanup-disks" : {
+                                           "default" : 0,
+                                           "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "name" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/",
+                                        [
+                                           "Sys.Modify",
+                                           "Datastore.Allocate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               },
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get details about a zpool.",
+                                  "method" : "GET",
+                                  "name" : "detail",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "name" : {
+                                           "description" : "The storage identifier.",
+                                           "format" : "pve-storage-id",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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" : {
+                                     "properties" : {
+                                        "action" : {
+                                           "description" : "Information about the recommended action to fix the state.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "children" : {
+                                           "description" : "The pool configuration information, including the vdevs for each section (e.g. spares, cache), may be nested.",
+                                           "items" : {
+                                              "properties" : {
+                                                 "cksum" : {
+                                                    "optional" : 1,
+                                                    "type" : "number"
+                                                 },
+                                                 "msg" : {
+                                                    "description" : "An optional message about the vdev.",
+                                                    "type" : "string"
+                                                 },
+                                                 "name" : {
+                                                    "description" : "The name of the vdev or section.",
+                                                    "type" : "string"
+                                                 },
+                                                 "read" : {
+                                                    "optional" : 1,
+                                                    "type" : "number"
+                                                 },
+                                                 "state" : {
+                                                    "description" : "The state of the vdev.",
+                                                    "optional" : 1,
+                                                    "type" : "string"
+                                                 },
+                                                 "write" : {
+                                                    "optional" : 1,
+                                                    "type" : "number"
+                                                 }
+                                              },
+                                              "type" : "object"
+                                           },
+                                           "type" : "array"
+                                        },
+                                        "errors" : {
+                                           "description" : "Information about the errors on the zpool.",
+                                           "type" : "string"
+                                        },
+                                        "name" : {
+                                           "description" : "The name of the zpool.",
+                                           "type" : "string"
+                                        },
+                                        "scan" : {
+                                           "description" : "Information about the last/current scrub.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "state" : {
+                                           "description" : "The state of the zpool.",
+                                           "type" : "string"
+                                        },
+                                        "status" : {
+                                           "description" : "Information about the state of the zpool.",
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/disks/zfs/{name}",
+                            "text" : "{name}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List Zpools.",
+                            "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" : {
+                                     "alloc" : {
+                                        "description" : "",
+                                        "type" : "integer"
+                                     },
+                                     "dedup" : {
+                                        "description" : "",
+                                        "type" : "number"
+                                     },
+                                     "frag" : {
+                                        "description" : "",
+                                        "type" : "integer"
+                                     },
+                                     "free" : {
+                                        "description" : "",
+                                        "type" : "integer"
+                                     },
+                                     "health" : {
+                                        "description" : "",
+                                        "type" : "string"
+                                     },
+                                     "name" : {
+                                        "description" : "",
+                                        "type" : "string"
+                                     },
+                                     "size" : {
+                                        "description" : "",
+                                        "type" : "integer"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{name}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create a ZFS pool.",
+                            "method" : "POST",
+                            "name" : "create",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "add_storage" : {
+                                     "default" : 0,
+                                     "description" : "Configure storage using the zpool.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "ashift" : {
+                                     "default" : 12,
+                                     "description" : "Pool sector size exponent.",
+                                     "maximum" : 16,
+                                     "minimum" : 9,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (9 - 16)"
+                                  },
+                                  "compression" : {
+                                     "default" : "on",
+                                     "description" : "The compression algorithm to use.",
+                                     "enum" : [
+                                        "on",
+                                        "off",
+                                        "gzip",
+                                        "lz4",
+                                        "lzjb",
+                                        "zle",
+                                        "zstd"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "devices" : {
+                                     "description" : "The block devices you want to create the zpool on.",
+                                     "format" : "string-list",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "draid-config" : {
+                                     "format" : {
+                                        "data" : {
+                                           "description" : "The number of data devices per redundancy group. (dRAID)",
+                                           "minimum" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "spares" : {
+                                           "description" : "Number of dRAID spares.",
+                                           "minimum" : 0,
+                                           "type" : "integer"
+                                        }
+                                     },
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "data=<integer> ,spares=<integer>"
+                                  },
+                                  "name" : {
+                                     "description" : "The storage identifier.",
+                                     "format" : "pve-storage-id",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "raidlevel" : {
+                                     "description" : "The RAID level to use.",
+                                     "enum" : [
+                                        "single",
+                                        "mirror",
+                                        "raid10",
+                                        "raidz",
+                                        "raidz2",
+                                        "raidz3",
+                                        "draid",
+                                        "draid2",
+                                        "draid3"
+                                     ],
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify",
+                                     "Datastore.Allocate"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/disks/zfs",
+                      "text" : "zfs"
+                   },
+                   {
+                      "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",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "skipsmart" : {
+                                     "default" : 0,
+                                     "description" : "Skip smart checks.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "type" : {
+                                     "description" : "Only list specific types of disks.",
+                                     "enum" : [
+                                        "unused",
+                                        "journal_disks"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "or",
+                                  [
+                                     "perm",
+                                     "/",
+                                     [
+                                        "Sys.Audit",
+                                        "Datastore.Audit"
+                                     ],
+                                     "any",
+                                     1
+                                  ],
+                                  [
+                                     "perm",
+                                     "/nodes/{node}",
+                                     [
+                                        "Sys.Audit",
+                                        "Datastore.Audit"
+                                     ],
+                                     "any",
+                                     1
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "devpath" : {
+                                        "description" : "The device path",
+                                        "type" : "string"
+                                     },
+                                     "gpt" : {
+                                        "type" : "boolean"
+                                     },
+                                     "health" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "model" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "mounted" : {
+                                        "type" : "boolean"
+                                     },
+                                     "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"
+                                     },
+                                     "size" : {
+                                        "type" : "integer"
+                                     },
+                                     "used" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "vendor" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "wwn" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/disks/list",
+                      "text" : "list"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get SMART Health of a disk.",
+                            "method" : "GET",
+                            "name" : "smart",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "disk" : {
+                                     "description" : "Block device name",
+                                     "pattern" : "^/dev/[a-zA-Z0-9\\/]+$",
+                                     "type" : "string"
+                                  },
+                                  "healthonly" : {
+                                     "description" : "If true returns only the health status",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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" : {
+                               "properties" : {
+                                  "attributes" : {
+                                     "optional" : 1,
+                                     "type" : "array"
+                                  },
+                                  "health" : {
+                                     "type" : "string"
+                                  },
+                                  "text" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/disks/smart",
+                      "text" : "smart"
+                   },
+                   {
+                      "info" : {
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Initialize Disk with GPT",
+                            "method" : "POST",
+                            "name" : "initgpt",
+                            "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>"
+                                  },
+                                  "uuid" : {
+                                     "description" : "UUID for the GPT table",
+                                     "maxLength" : 36,
+                                     "optional" : 1,
+                                     "pattern" : "[a-fA-F0-9\\-]+",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/disks",
+                "text" : "disks"
+             },
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List available updates.",
+                            "method" : "GET",
+                            "name" : "list_updates",
+                            "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" : {
+                               "items" : {
+                                  "properties" : {},
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "This is used to resynchronize the package index files from their sources (apt-get update).",
+                            "method" : "POST",
+                            "name" : "update_database",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "notify" : {
+                                     "default" : 0,
+                                     "description" : "Send notification mail about new packages (to email address specified for user 'root at pam').",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "quiet" : {
+                                     "default" : 0,
+                                     "description" : "Only produces output suitable for logging, omitting progress indicators.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/apt/update",
+                      "text" : "update"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get package changelogs.",
+                            "method" : "GET",
+                            "name" : "changelog",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "name" : {
+                                     "description" : "Package name.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "version" : {
+                                     "description" : "Package version.",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/apt/changelog",
+                      "text" : "changelog"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get APT repository information.",
+                            "method" : "GET",
+                            "name" : "repositories",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "description" : "Result from parsing the APT repository files in /etc/apt/.",
+                               "properties" : {
+                                  "digest" : {
+                                     "description" : "Common digest of all files.",
+                                     "type" : "string"
+                                  },
+                                  "errors" : {
+                                     "description" : "List of problematic repository files.",
+                                     "items" : {
+                                        "properties" : {
+                                           "error" : {
+                                              "description" : "The error message",
+                                              "type" : "string"
+                                           },
+                                           "path" : {
+                                              "description" : "Path to the problematic file.",
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  },
+                                  "files" : {
+                                     "description" : "List of parsed repository files.",
+                                     "items" : {
+                                        "properties" : {
+                                           "digest" : {
+                                              "description" : "Digest of the file as bytes.",
+                                              "items" : {
+                                                 "type" : "integer"
+                                              },
+                                              "type" : "array"
+                                           },
+                                           "file-type" : {
+                                              "description" : "Format of the file.",
+                                              "enum" : [
+                                                 "list",
+                                                 "sources"
+                                              ],
+                                              "type" : "string"
+                                           },
+                                           "path" : {
+                                              "description" : "Path to the problematic file.",
+                                              "type" : "string"
+                                           },
+                                           "repositories" : {
+                                              "description" : "The parsed repositories.",
+                                              "items" : {
+                                                 "properties" : {
+                                                    "Comment" : {
+                                                       "description" : "Associated comment",
+                                                       "optional" : 1,
+                                                       "type" : "string"
+                                                    },
+                                                    "Components" : {
+                                                       "description" : "List of repository components",
+                                                       "items" : {
+                                                          "type" : "string"
+                                                       },
+                                                       "optional" : 1,
+                                                       "type" : "array"
+                                                    },
+                                                    "Enabled" : {
+                                                       "description" : "Whether the repository is enabled or not",
+                                                       "type" : "boolean"
+                                                    },
+                                                    "FileType" : {
+                                                       "description" : "Format of the defining file.",
+                                                       "enum" : [
+                                                          "list",
+                                                          "sources"
+                                                       ],
+                                                       "type" : "string"
+                                                    },
+                                                    "Options" : {
+                                                       "description" : "Additional options",
+                                                       "items" : {
+                                                          "properties" : {
+                                                             "Key" : {
+                                                                "type" : "string"
+                                                             },
+                                                             "Values" : {
+                                                                "items" : {
+                                                                   "type" : "string"
+                                                                },
+                                                                "type" : "array"
+                                                             }
+                                                          },
+                                                          "type" : "object"
+                                                       },
+                                                       "optional" : 1,
+                                                       "type" : "array"
+                                                    },
+                                                    "Suites" : {
+                                                       "description" : "List of package distribuitions",
+                                                       "items" : {
+                                                          "type" : "string"
+                                                       },
+                                                       "type" : "array"
+                                                    },
+                                                    "Types" : {
+                                                       "description" : "List of package types.",
+                                                       "items" : {
+                                                          "enum" : [
+                                                             "deb",
+                                                             "deb-src"
+                                                          ],
+                                                          "type" : "string"
+                                                       },
+                                                       "type" : "array"
+                                                    },
+                                                    "URIs" : {
+                                                       "description" : "List of repository URIs.",
+                                                       "items" : {
+                                                          "type" : "string"
+                                                       },
+                                                       "type" : "array"
+                                                    }
+                                                 },
+                                                 "type" : "object"
+                                              },
+                                              "type" : "array"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  },
+                                  "infos" : {
+                                     "description" : "Additional information/warnings for APT repositories.",
+                                     "items" : {
+                                        "properties" : {
+                                           "index" : {
+                                              "description" : "Index of the associated repository within the file.",
+                                              "type" : "string"
+                                           },
+                                           "kind" : {
+                                              "description" : "Kind of the information (e.g. warning).",
+                                              "type" : "string"
+                                           },
+                                           "message" : {
+                                              "description" : "Information message.",
+                                              "type" : "string"
+                                           },
+                                           "path" : {
+                                              "description" : "Path to the associated file.",
+                                              "type" : "string"
+                                           },
+                                           "property" : {
+                                              "description" : "Property from which the info originates.",
+                                              "optional" : 1,
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  },
+                                  "standard-repos" : {
+                                     "description" : "List of standard repositories and their configuration status",
+                                     "items" : {
+                                        "properties" : {
+                                           "handle" : {
+                                              "description" : "Handle to identify the repository.",
+                                              "type" : "string"
+                                           },
+                                           "name" : {
+                                              "description" : "Full name of the repository.",
+                                              "type" : "string"
+                                           },
+                                           "status" : {
+                                              "description" : "Indicating enabled/disabled status, if the repository is configured.",
+                                              "optional" : 1,
+                                              "type" : "boolean"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Change the properties of a repository. Currently only allows enabling/disabling.",
+                            "method" : "POST",
+                            "name" : "change_repository",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "digest" : {
+                                     "description" : "Digest to detect modifications.",
+                                     "maxLength" : 80,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "enabled" : {
+                                     "description" : "Whether the repository should be enabled or not.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "index" : {
+                                     "description" : "Index within the file (starting from 0).",
+                                     "type" : "integer",
+                                     "typetext" : "<integer>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "path" : {
+                                     "description" : "Path to the containing file.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Add a standard repository to the configuration",
+                            "method" : "PUT",
+                            "name" : "add_repository",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "digest" : {
+                                     "description" : "Digest to detect modifications.",
+                                     "maxLength" : 80,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "handle" : {
+                                     "description" : "Handle that identifies a repository.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/apt/repositories",
+                      "text" : "repositories"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get package information for important Proxmox packages.",
+                            "method" : "GET",
+                            "name" : "versions",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {},
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/apt/versions",
+                      "text" : "versions"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Directory index for apt (Advanced Package Tool).",
+                      "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" : {
+                               "id" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{id}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/apt",
+                "text" : "apt"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Delete rule.",
+                                  "method" : "DELETE",
+                                  "name" : "delete_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "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>"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               },
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get single rule data.",
+                                  "method" : "GET",
+                                  "name" : "get_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Audit"
+                                        ]
+                                     ]
+                                  },
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "properties" : {
+                                        "action" : {
+                                           "type" : "string"
+                                        },
+                                        "comment" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "dest" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "dport" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "enable" : {
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "icmp-type" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "iface" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "ipversion" : {
+                                           "optional" : 1,
+                                           "type" : "integer"
+                                        },
+                                        "log" : {
+                                           "description" : "Log level for firewall rule",
+                                           "enum" : [
+                                              "emerg",
+                                              "alert",
+                                              "crit",
+                                              "err",
+                                              "warning",
+                                              "notice",
+                                              "info",
+                                              "debug",
+                                              "nolog"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "macro" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "pos" : {
+                                           "type" : "integer"
+                                        },
+                                        "proto" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "source" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "sport" : {
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "type" : {
+                                           "type" : "string"
+                                        }
+                                     },
+                                     "type" : "object"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Modify rule data.",
+                                  "method" : "PUT",
+                                  "name" : "update_rule",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "action" : {
+                                           "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                           "maxLength" : 20,
+                                           "minLength" : 2,
+                                           "optional" : 1,
+                                           "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                           "type" : "string"
+                                        },
+                                        "comment" : {
+                                           "description" : "Descriptive comment.",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "delete" : {
+                                           "description" : "A list of settings you want to delete.",
+                                           "format" : "pve-configid-list",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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>"
+                                        },
+                                        "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>"
+                                        },
+                                        "dport" : {
+                                           "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                           "format" : "pve-fw-dport-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "enable" : {
+                                           "description" : "Flag to enable/disable a rule.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "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",
+                                           "maxLength" : 20,
+                                           "minLength" : 2,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "log" : {
+                                           "description" : "Log level for firewall rule.",
+                                           "enum" : [
+                                              "emerg",
+                                              "alert",
+                                              "crit",
+                                              "err",
+                                              "warning",
+                                              "notice",
+                                              "info",
+                                              "debug",
+                                              "nolog"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        },
+                                        "macro" : {
+                                           "description" : "Use predefined standard macro.",
+                                           "maxLength" : 128,
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "moveto" : {
+                                           "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "pos" : {
+                                           "description" : "Update rule at position <pos>.",
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "proto" : {
+                                           "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                           "format" : "pve-fw-protocol-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "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>"
+                                        },
+                                        "sport" : {
+                                           "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                           "format" : "pve-fw-sport-spec",
+                                           "optional" : 1,
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "type" : {
+                                           "description" : "Rule type.",
+                                           "enum" : [
+                                              "in",
+                                              "out",
+                                              "group"
+                                           ],
+                                           "optional" : 1,
+                                           "type" : "string"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/nodes/{node}",
+                                        [
+                                           "Sys.Modify"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "null"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/firewall/rules/{pos}",
+                            "text" : "{pos}"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "List rules.",
+                            "method" : "GET",
+                            "name" : "get_rules",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "pos" : {
+                                        "type" : "integer"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "links" : [
+                                  {
+                                     "href" : "{pos}",
+                                     "rel" : "child"
+                                  }
+                               ],
+                               "type" : "array"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Create new rule.",
+                            "method" : "POST",
+                            "name" : "create_rule",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "action" : {
+                                     "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 0,
+                                     "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                     "type" : "string"
+                                  },
+                                  "comment" : {
+                                     "description" : "Descriptive comment.",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "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>"
+                                  },
+                                  "dport" : {
+                                     "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-dport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "enable" : {
+                                     "description" : "Flag to enable/disable a rule.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "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",
+                                     "maxLength" : 20,
+                                     "minLength" : 2,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "log" : {
+                                     "description" : "Log level for firewall rule.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "macro" : {
+                                     "description" : "Use predefined standard macro.",
+                                     "maxLength" : 128,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "pos" : {
+                                     "description" : "Update rule at position <pos>.",
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "proto" : {
+                                     "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                     "format" : "pve-fw-protocol-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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>"
+                                  },
+                                  "sport" : {
+                                     "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                     "format" : "pve-fw-sport-spec",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "type" : {
+                                     "description" : "Rule type.",
+                                     "enum" : [
+                                        "in",
+                                        "out",
+                                        "group"
+                                     ],
+                                     "optional" : 0,
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 0,
+                      "path" : "/nodes/{node}/firewall/rules",
+                      "text" : "rules"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get host firewall options.",
+                            "method" : "GET",
+                            "name" : "get_options",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Audit"
+                                  ]
+                               ]
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "properties" : {
+                                  "enable" : {
+                                     "description" : "Enable host firewall rules.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "log_level_in" : {
+                                     "description" : "Log level for incoming traffic.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "log_level_out" : {
+                                     "description" : "Log level for outgoing traffic.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "log_nf_conntrack" : {
+                                     "default" : 0,
+                                     "description" : "Enable logging of conntrack information.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "ndp" : {
+                                     "default" : 0,
+                                     "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "nf_conntrack_allow_invalid" : {
+                                     "default" : 0,
+                                     "description" : "Allow invalid packets on connection tracking.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "nf_conntrack_max" : {
+                                     "default" : 262144,
+                                     "description" : "Maximum number of tracked connections.",
+                                     "minimum" : 32768,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "nf_conntrack_tcp_timeout_established" : {
+                                     "default" : 432000,
+                                     "description" : "Conntrack established timeout.",
+                                     "minimum" : 7875,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "nf_conntrack_tcp_timeout_syn_recv" : {
+                                     "default" : 60,
+                                     "description" : "Conntrack syn recv timeout.",
+                                     "maximum" : 60,
+                                     "minimum" : 30,
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "nosmurfs" : {
+                                     "description" : "Enable SMURFS filter.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "protection_synflood" : {
+                                     "default" : 0,
+                                     "description" : "Enable synflood protection",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "protection_synflood_burst" : {
+                                     "default" : 1000,
+                                     "description" : "Synflood protection rate burst by ip src.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "protection_synflood_rate" : {
+                                     "default" : 200,
+                                     "description" : "Synflood protection rate syn/sec by ip src.",
+                                     "optional" : 1,
+                                     "type" : "integer"
+                                  },
+                                  "smurf_log_level" : {
+                                     "description" : "Log level for SMURFS filter.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "tcp_flags_log_level" : {
+                                     "description" : "Log level for illegal tcp flags filter.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "tcpflags" : {
+                                     "default" : 0,
+                                     "description" : "Filter illegal combinations of TCP flags.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 1,
+                            "description" : "Set Firewall options.",
+                            "method" : "PUT",
+                            "name" : "set_options",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "delete" : {
+                                     "description" : "A list of settings you want to delete.",
+                                     "format" : "pve-configid-list",
+                                     "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>"
+                                  },
+                                  "enable" : {
+                                     "description" : "Enable host firewall rules.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "log_level_in" : {
+                                     "description" : "Log level for incoming traffic.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "log_level_out" : {
+                                     "description" : "Log level for outgoing traffic.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "log_nf_conntrack" : {
+                                     "default" : 0,
+                                     "description" : "Enable logging of conntrack information.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "ndp" : {
+                                     "default" : 0,
+                                     "description" : "Enable NDP (Neighbor Discovery Protocol).",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "nf_conntrack_allow_invalid" : {
+                                     "default" : 0,
+                                     "description" : "Allow invalid packets on connection tracking.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "nf_conntrack_max" : {
+                                     "default" : 262144,
+                                     "description" : "Maximum number of tracked connections.",
+                                     "minimum" : 32768,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "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" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "nosmurfs" : {
+                                     "description" : "Enable SMURFS filter.",
+                                     "optional" : 1,
+                                     "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" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "tcp_flags_log_level" : {
+                                     "description" : "Log level for illegal tcp flags filter.",
+                                     "enum" : [
+                                        "emerg",
+                                        "alert",
+                                        "crit",
+                                        "err",
+                                        "warning",
+                                        "notice",
+                                        "info",
+                                        "debug",
+                                        "nolog"
+                                     ],
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "tcpflags" : {
+                                     "default" : 0,
+                                     "description" : "Filter illegal combinations of TCP flags.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/firewall/options",
+                      "text" : "options"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Read firewall log",
+                            "method" : "GET",
+                            "name" : "log",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "limit" : {
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "start" : {
+                                     "minimum" : 0,
+                                     "optional" : 1,
+                                     "type" : "integer",
+                                     "typetext" : "<integer> (0 - N)"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Syslog"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "n" : {
+                                        "description" : "Line number",
+                                        "type" : "integer"
+                                     },
+                                     "t" : {
+                                        "description" : "Line text",
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/firewall/log",
+                      "text" : "log"
+                   }
+                ],
+                "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" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{name}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/firewall",
+                "text" : "firewall"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Get replication job status.",
+                                  "method" : "GET",
+                                  "name" : "job_status",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "id" : {
+                                           "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                                           "format" : "pve-replication-job-id",
+                                           "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
+                                     "user" : "all"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "object"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/replication/{id}/status",
+                            "text" : "status"
+                         },
+                         {
+                            "info" : {
+                               "GET" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Read replication job log.",
+                                  "method" : "GET",
+                                  "name" : "read_job_log",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "id" : {
+                                           "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                                           "format" : "pve-replication-job-id",
+                                           "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                                           "type" : "string"
+                                        },
+                                        "limit" : {
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        },
+                                        "start" : {
+                                           "minimum" : 0,
+                                           "optional" : 1,
+                                           "type" : "integer",
+                                           "typetext" : "<integer> (0 - N)"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "description" : "Requires the VM.Audit permission on /vms/<vmid>, or 'Sys.Audit' on '/nodes/<node>'",
+                                     "user" : "all"
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "items" : {
+                                        "properties" : {
+                                           "n" : {
+                                              "description" : "Line number",
+                                              "type" : "integer"
+                                           },
+                                           "t" : {
+                                              "description" : "Line text",
+                                              "type" : "string"
+                                           }
+                                        },
+                                        "type" : "object"
+                                     },
+                                     "type" : "array"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/replication/{id}/log",
+                            "text" : "log"
+                         },
+                         {
+                            "info" : {
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Schedule replication job to start as soon as possible.",
+                                  "method" : "POST",
+                                  "name" : "schedule_now",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "id" : {
+                                           "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                                           "format" : "pve-replication-job-id",
+                                           "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                                           "type" : "string"
+                                        },
+                                        "node" : {
+                                           "description" : "The cluster node name.",
+                                           "format" : "pve-node",
+                                           "type" : "string",
+                                           "typetext" : "<string>"
+                                        }
+                                     }
+                                  },
+                                  "permissions" : {
+                                     "check" : [
+                                        "perm",
+                                        "/storage",
+                                        [
+                                           "Datastore.Allocate"
+                                        ]
+                                     ]
+                                  },
+                                  "protected" : 1,
+                                  "proxyto" : "node",
+                                  "returns" : {
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/replication/{id}/schedule_now",
+                            "text" : "schedule_now"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Directory index.",
+                            "method" : "GET",
+                            "name" : "index",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "id" : {
+                                     "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '<GUEST>-<JOBNUM>'.",
+                                     "format" : "pve-replication-job-id",
+                                     "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}",
+                                     "type" : "string"
+                                  },
+                                  "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}/replication/{id}",
+                      "text" : "{id}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "List status of all replication jobs on this node.",
+                      "method" : "GET",
+                      "name" : "status",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "guest" : {
+                               "description" : "Only list replication jobs for this guest.",
+                               "format" : "pve-vmid",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
+                         "user" : "all"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "id" : {
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "links" : [
+                            {
+                               "href" : "{id}",
+                               "rel" : "child"
+                            }
+                         ],
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/nodes/{node}/replication",
+                "text" : "replication"
+             },
+             {
+                "children" : [
+                   {
+                      "children" : [
+                         {
+                            "info" : {
+                               "DELETE" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Revoke existing certificate from CA.",
+                                  "method" : "DELETE",
+                                  "name" : "revoke_certificate",
+                                  "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" : "string"
+                                  }
+                               },
+                               "POST" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Order a new certificate from ACME-compatible CA.",
+                                  "method" : "POST",
+                                  "name" : "new_certificate",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "force" : {
+                                           "default" : 0,
+                                           "description" : "Overwrite existing custom certificate.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "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" : "string"
+                                  }
+                               },
+                               "PUT" : {
+                                  "allowtoken" : 1,
+                                  "description" : "Renew existing certificate from CA.",
+                                  "method" : "PUT",
+                                  "name" : "renew_certificate",
+                                  "parameters" : {
+                                     "additionalProperties" : 0,
+                                     "properties" : {
+                                        "force" : {
+                                           "default" : 0,
+                                           "description" : "Force renewal even if expiry is more than 30 days away.",
+                                           "optional" : 1,
+                                           "type" : "boolean",
+                                           "typetext" : "<boolean>"
+                                        },
+                                        "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" : "string"
+                                  }
+                               }
+                            },
+                            "leaf" : 1,
+                            "path" : "/nodes/{node}/certificates/acme/certificate",
+                            "text" : "certificate"
+                         }
+                      ],
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "ACME 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}/certificates/acme",
+                      "text" : "acme"
+                   },
+                   {
+                      "info" : {
+                         "GET" : {
+                            "allowtoken" : 1,
+                            "description" : "Get information about node's certificates.",
+                            "method" : "GET",
+                            "name" : "info",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "user" : "all"
+                            },
+                            "proxyto" : "node",
+                            "returns" : {
+                               "items" : {
+                                  "properties" : {
+                                     "filename" : {
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "fingerprint" : {
+                                        "description" : "Certificate SHA 256 fingerprint.",
+                                        "optional" : 1,
+                                        "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                        "type" : "string"
+                                     },
+                                     "issuer" : {
+                                        "description" : "Certificate issuer name.",
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     },
+                                     "notafter" : {
+                                        "description" : "Certificate's notAfter timestamp (UNIX epoch).",
+                                        "optional" : 1,
+                                        "renderer" : "timestamp",
+                                        "type" : "integer"
+                                     },
+                                     "notbefore" : {
+                                        "description" : "Certificate's notBefore timestamp (UNIX epoch).",
+                                        "optional" : 1,
+                                        "renderer" : "timestamp",
+                                        "type" : "integer"
+                                     },
+                                     "pem" : {
+                                        "description" : "Certificate in PEM format",
+                                        "format" : "pem-certificate",
+                                        "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" : {
+                                           "type" : "string"
+                                        },
+                                        "optional" : 1,
+                                        "renderer" : "yaml",
+                                        "type" : "array"
+                                     },
+                                     "subject" : {
+                                        "description" : "Certificate subject name.",
+                                        "optional" : 1,
+                                        "type" : "string"
+                                     }
+                                  },
+                                  "type" : "object"
+                               },
+                               "type" : "array"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/certificates/info",
+                      "text" : "info"
+                   },
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 1,
+                            "description" : "DELETE custom certificate chain and key.",
+                            "method" : "DELETE",
+                            "name" : "remove_custom_cert",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "restart" : {
+                                     "default" : 0,
+                                     "description" : "Restart pveproxy.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "POST" : {
+                            "allowtoken" : 1,
+                            "description" : "Upload or update custom certificate chain and key.",
+                            "method" : "POST",
+                            "name" : "upload_custom_cert",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "certificates" : {
+                                     "description" : "PEM encoded certificate (chain).",
+                                     "format" : "pem-certificate-chain",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "force" : {
+                                     "default" : 0,
+                                     "description" : "Overwrite existing custom or ACME certificate files.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "key" : {
+                                     "description" : "PEM encoded private key.",
+                                     "format" : "pem-string",
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "node" : {
+                                     "description" : "The cluster node name.",
+                                     "format" : "pve-node",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "restart" : {
+                                     "default" : 0,
+                                     "description" : "Restart pveproxy.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "perm",
+                                  "/nodes/{node}",
+                                  [
+                                     "Sys.Modify"
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "proxyto" : "node",
+                            "returns" : {
+                               "properties" : {
+                                  "filename" : {
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "fingerprint" : {
+                                     "description" : "Certificate SHA 256 fingerprint.",
+                                     "optional" : 1,
+                                     "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                     "type" : "string"
+                                  },
+                                  "issuer" : {
+                                     "description" : "Certificate issuer name.",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  },
+                                  "notafter" : {
+                                     "description" : "Certificate's notAfter timestamp (UNIX epoch).",
+                                     "optional" : 1,
+                                     "renderer" : "timestamp",
+                                     "type" : "integer"
+                                  },
+                                  "notbefore" : {
+                                     "description" : "Certificate's notBefore timestamp (UNIX epoch).",
+                                     "optional" : 1,
+                                     "renderer" : "timestamp",
+                                     "type" : "integer"
+                                  },
+                                  "pem" : {
+                                     "description" : "Certificate in PEM format",
+                                     "format" : "pem-certificate",
+                                     "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" : {
+                                        "type" : "string"
+                                     },
+                                     "optional" : 1,
+                                     "renderer" : "yaml",
+                                     "type" : "array"
+                                  },
+                                  "subject" : {
+                                     "description" : "Certificate subject name.",
+                                     "optional" : 1,
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/nodes/{node}/certificates/custom",
+                      "text" : "custom"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Node 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}/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" : {
+                         "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"
+                            },
+                            "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"
+                            },
+                            "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"
+                            },
+                            "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"
+                            },
+                            "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"
+                            },
+                            "wakeonlan" : {
+                               "description" : "MAC address for wake on LAN",
+                               "format" : "mac-addr",
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "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"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/version",
+                "text" : "version"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read node status",
+                      "method" : "GET",
+                      "name" : "status",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "object"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Reboot or shutdown a node.",
+                      "method" : "POST",
+                      "name" : "node_cmd",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "command" : {
+                               "description" : "Specify the command.",
+                               "enum" : [
+                                  "reboot",
+                                  "shutdown"
+                               ],
+                               "type" : "string"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.PowerMgmt"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/status",
+                "text" : "status"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read tap/vm network device interface counters",
+                      "method" : "GET",
+                      "name" : "netstat",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/netstat",
+                "text" : "netstat"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Execute multiple commands in order.",
+                      "method" : "POST",
+                      "name" : "execute",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "commands" : {
+                               "description" : "JSON encoded array of commands.",
+                               "format" : "pve-command-batch",
+                               "type" : "string",
+                               "typetext" : "<string>",
+                               "verbose_description" : "JSON encoded array of commands, where each command is an object with the following properties:\n  args:      <object>\n\n\t     A set of parameter names and their values.\n\n  method:    (GET|POST|PUT|DELETE)\n\n\t     A method related to the API endpoint (GET, POST etc.).\n\n  path:      <string>\n\n\t     A relative path to an API endpoint on this node.\n\n"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/execute",
+                "text" : "execute"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Try to wake a node via 'wake on LAN' network packet.",
+                      "method" : "POST",
+                      "name" : "wakeonlan",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "target node for wake on LAN packet",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.PowerMgmt"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "description" : "MAC address used to assemble the WoL magic packet.",
+                         "format" : "mac-addr",
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/wakeonlan",
+                "text" : "wakeonlan"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read node RRD statistics (returns PNG)",
+                      "method" : "GET",
+                      "name" : "rrd",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cf" : {
+                               "description" : "The RRD consolidation function",
+                               "enum" : [
+                                  "AVERAGE",
+                                  "MAX"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "ds" : {
+                               "description" : "The list of datasources you want to display.",
+                               "format" : "pve-configid-list",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "timeframe" : {
+                               "description" : "Specify the time frame you are interested in.",
+                               "enum" : [
+                                  "hour",
+                                  "day",
+                                  "week",
+                                  "month",
+                                  "year"
+                               ],
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "properties" : {
+                            "filename" : {
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/rrd",
+                "text" : "rrd"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read node RRD statistics",
+                      "method" : "GET",
+                      "name" : "rrddata",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cf" : {
+                               "description" : "The RRD consolidation function",
+                               "enum" : [
+                                  "AVERAGE",
+                                  "MAX"
+                               ],
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "timeframe" : {
+                               "description" : "Specify the time frame you are interested in.",
+                               "enum" : [
+                                  "hour",
+                                  "day",
+                                  "week",
+                                  "month",
+                                  "year"
+                               ],
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/rrddata",
+                "text" : "rrddata"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read system log",
+                      "method" : "GET",
+                      "name" : "syslog",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "limit" : {
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "service" : {
+                               "description" : "Service ID",
+                               "maxLength" : 128,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "since" : {
+                               "description" : "Display all log since this date-time string.",
+                               "optional" : 1,
+                               "pattern" : "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}(:\\d{2})?)?$",
+                               "type" : "string"
+                            },
+                            "start" : {
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "until" : {
+                               "description" : "Display all log until this date-time string.",
+                               "optional" : 1,
+                               "pattern" : "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}(:\\d{2})?)?$",
+                               "type" : "string"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Syslog"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {
+                               "n" : {
+                                  "description" : "Line number",
+                                  "type" : "integer"
+                               },
+                               "t" : {
+                                  "description" : "Line text",
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cmd" : {
+                               "default" : "login",
+                               "description" : "Run specific command or default to login.",
+                               "enum" : [
+                                  "ceph_install",
+                                  "login",
+                                  "upgrade"
+                               ],
+                               "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,
+                               "minimum" : 16,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (16 - 2160)"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "websocket" : {
+                               "description" : "use websocket instead of standard vnc.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "width" : {
+                               "description" : "sets the width of the console in pixels.",
+                               "maximum" : 4096,
+                               "minimum" : 16,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (16 - 4096)"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Console"
+                            ]
+                         ],
+                         "description" : "Restricted to users on realm 'pam'"
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cert" : {
+                               "type" : "string"
+                            },
+                            "port" : {
+                               "type" : "integer"
+                            },
+                            "ticket" : {
+                               "type" : "string"
+                            },
+                            "upid" : {
+                               "type" : "string"
+                            },
+                            "user" : {
+                               "type" : "string"
+                            }
+                         }
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/vncshell",
+                "text" : "vncshell"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Creates a VNC Shell proxy.",
+                      "method" : "POST",
+                      "name" : "termproxy",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cmd" : {
+                               "default" : "login",
+                               "description" : "Run specific command or default to login.",
+                               "enum" : [
+                                  "ceph_install",
+                                  "login",
+                                  "upgrade"
+                               ],
+                               "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>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Console"
+                            ]
+                         ],
+                         "description" : "Restricted to users on realm 'pam'"
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "port" : {
+                               "type" : "integer"
+                            },
+                            "ticket" : {
+                               "type" : "string"
+                            },
+                            "upid" : {
+                               "type" : "string"
+                            },
+                            "user" : {
+                               "type" : "string"
+                            }
+                         }
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/termproxy",
+                "text" : "termproxy"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Opens a websocket for VNC traffic.",
+                      "method" : "GET",
+                      "name" : "vncwebsocket",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "port" : {
+                               "description" : "Port number returned by previous vncproxy call.",
+                               "maximum" : 5999,
+                               "minimum" : 5900,
+                               "type" : "integer",
+                               "typetext" : "<integer> (5900 - 5999)"
+                            },
+                            "vncticket" : {
+                               "description" : "Ticket from previous call to vncproxy.",
+                               "maxLength" : 512,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Console"
+                            ]
+                         ],
+                         "description" : "Restricted to users on realm 'pam'. You also need to pass a valid ticket (vncticket)."
+                      },
+                      "returns" : {
+                         "properties" : {
+                            "port" : {
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/vncwebsocket",
+                "text" : "vncwebsocket"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Creates a SPICE shell.",
+                      "method" : "POST",
+                      "name" : "spiceshell",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "cmd" : {
+                               "default" : "login",
+                               "description" : "Run specific command or default to login.",
+                               "enum" : [
+                                  "ceph_install",
+                                  "login",
+                                  "upgrade"
+                               ],
+                               "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>"
+                            },
+                            "proxy" : {
+                               "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).",
+                               "format" : "address",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Console"
+                            ]
+                         ],
+                         "description" : "Restricted to users on realm 'pam'"
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "additionalProperties" : 1,
+                         "description" : "Returned values can be directly passed to the 'remote-viewer' application.",
+                         "properties" : {
+                            "host" : {
+                               "type" : "string"
+                            },
+                            "password" : {
+                               "type" : "string"
+                            },
+                            "proxy" : {
+                               "type" : "string"
+                            },
+                            "tls-port" : {
+                               "type" : "integer"
+                            },
+                            "type" : {
+                               "type" : "string"
+                            }
+                         }
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/spiceshell",
+                "text" : "spiceshell"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read DNS settings.",
+                      "method" : "GET",
+                      "name" : "dns",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "dns1" : {
+                               "description" : "First name server IP address.",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "dns2" : {
+                               "description" : "Second name server IP address.",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "dns3" : {
+                               "description" : "Third name server IP address.",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "search" : {
+                               "description" : "Search domain for host-name lookup.",
+                               "optional" : 1,
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Write DNS settings.",
+                      "method" : "PUT",
+                      "name" : "update_dns",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "dns1" : {
+                               "description" : "First name server IP address.",
+                               "format" : "ip",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "dns2" : {
+                               "description" : "Second name server IP address.",
+                               "format" : "ip",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "dns3" : {
+                               "description" : "Third name server IP address.",
+                               "format" : "ip",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "search" : {
+                               "description" : "Search domain for host-name lookup.",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/dns",
+                "text" : "dns"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Read server time and time zone settings.",
+                      "method" : "GET",
+                      "name" : "time",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "localtime" : {
+                               "description" : "Seconds since 1970-01-01 00:00:00 (local time)",
+                               "minimum" : 1297163644,
+                               "renderer" : "timestamp_gmt",
+                               "type" : "integer"
+                            },
+                            "time" : {
+                               "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
+                               "minimum" : 1297163644,
+                               "renderer" : "timestamp",
+                               "type" : "integer"
+                            },
+                            "timezone" : {
+                               "description" : "Time zone",
+                               "type" : "string"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Set time zone.",
+                      "method" : "PUT",
+                      "name" : "set_timezone",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "timezone" : {
+                               "description" : "Time zone. The file '/usr/share/zoneinfo/zone.tab' contains the list of valid names.",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/time",
+                "text" : "time"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get list of appliances.",
+                      "method" : "GET",
+                      "name" : "aplinfo",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "items" : {
+                            "properties" : {},
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Download appliance templates.",
+                      "method" : "POST",
+                      "name" : "apl_download",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "storage" : {
+                               "description" : "The storage where the template will be stored",
+                               "format" : "pve-storage-id",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "template" : {
+                               "description" : "The template which will downloaded",
+                               "maxLength" : 255,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/storage/{storage}",
+                            [
+                               "Datastore.AllocateTemplate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/aplinfo",
+                "text" : "aplinfo"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Query metadata of an URL: file size, file name and mime type.",
+                      "method" : "GET",
+                      "name" : "query_url_metadata",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "url" : {
+                               "description" : "The URL to query the metadata from.",
+                               "pattern" : "https?://.*",
+                               "type" : "string"
+                            },
+                            "verify-certificates" : {
+                               "default" : 1,
+                               "description" : "If false, no SSL/TLS certificates will be verified.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "Sys.Audit",
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "proxyto" : "node",
+                      "returns" : {
+                         "properties" : {
+                            "filename" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "mimetype" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "size" : {
+                               "optional" : 1,
+                               "renderer" : "bytes",
+                               "type" : "integer"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/query-url-metadata",
+                "text" : "query-url-metadata"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Gather various systems information about a node",
+                      "method" : "GET",
+                      "name" : "report",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/report",
+                "text" : "report"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "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" : {
+                               "default" : "off",
+                               "description" : "Issue start command even if virtual guest have 'onboot' not set or set to off.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vms" : {
+                               "description" : "Only consider guests from this comma separated list of VMIDs.",
+                               "format" : "pve-vmid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "VM.PowerMgmt"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/startall",
+                "text" : "startall"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Stop all VMs and Containers.",
+                      "method" : "POST",
+                      "name" : "stopall",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vms" : {
+                               "description" : "Only consider Guests with these IDs.",
+                               "format" : "pve-vmid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "VM.PowerMgmt"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/stopall",
+                "text" : "stopall"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Migrate all VMs and Containers.",
+                      "method" : "POST",
+                      "name" : "migrateall",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "maxworkers" : {
+                               "description" : "Maximal number of parallel migration job. If not set use 'max_workers' from datacenter.cfg, one of both must be set!",
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - N)"
+                            },
+                            "node" : {
+                               "description" : "The cluster node name.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "target" : {
+                               "description" : "Target node.",
+                               "format" : "pve-node",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "vms" : {
+                               "description" : "Only consider Guests with these IDs.",
+                               "format" : "pve-vmid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "with-local-disks" : {
+                               "description" : "Enable live storage migration for local disk",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/",
+                            [
+                               "VM.Migrate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/migrateall",
+                "text" : "migrateall"
+             },
+             {
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get the content of /etc/hosts.",
+                      "method" : "GET",
+                      "name" : "get_etc_hosts",
+                      "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" : {
+                         "properties" : {
+                            "data" : {
+                               "description" : "The content of /etc/hosts.",
+                               "type" : "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"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Write /etc/hosts.",
+                      "method" : "POST",
+                      "name" : "write_etc_hosts",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "data" : {
+                               "description" : "The target content of /etc/hosts.",
+                               "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>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/nodes/{node}",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "proxyto" : "node",
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/nodes/{node}/hosts",
+                "text" : "hosts"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Node 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}",
+          "text" : "{node}"
+       }
+    ],
+    "info" : {
+       "GET" : {
+          "allowtoken" : 1,
+          "description" : "Cluster node index.",
+          "method" : "GET",
+          "name" : "index",
+          "parameters" : {
+             "additionalProperties" : 0
+          },
+          "permissions" : {
+             "user" : "all"
+          },
+          "returns" : {
+             "items" : {
+                "properties" : {
+                   "cpu" : {
+                      "description" : "CPU utilization.",
+                      "optional" : 1,
+                      "renderer" : "fraction_as_percentage",
+                      "type" : "number"
+                   },
+                   "level" : {
+                      "description" : "Support level.",
+                      "optional" : 1,
+                      "type" : "string"
+                   },
+                   "maxcpu" : {
+                      "description" : "Number of available CPUs.",
+                      "optional" : 1,
+                      "type" : "integer"
+                   },
+                   "maxmem" : {
+                      "description" : "Number of available memory in bytes.",
+                      "optional" : 1,
+                      "renderer" : "bytes",
+                      "type" : "integer"
+                   },
+                   "mem" : {
+                      "description" : "Used memory in bytes.",
+                      "optional" : 1,
+                      "renderer" : "bytes",
+                      "type" : "integer"
+                   },
+                   "node" : {
+                      "description" : "The cluster node name.",
+                      "format" : "pve-node",
+                      "type" : "string"
+                   },
+                   "ssl_fingerprint" : {
+                      "description" : "The SSL fingerprint for the node certificate.",
+                      "optional" : 1,
+                      "type" : "string"
+                   },
+                   "status" : {
+                      "description" : "Node status.",
+                      "enum" : [
+                         "unknown",
+                         "online",
+                         "offline"
+                      ],
+                      "type" : "string"
+                   },
+                   "uptime" : {
+                      "description" : "Node uptime in seconds.",
+                      "optional" : 1,
+                      "renderer" : "duration",
+                      "type" : "integer"
+                   }
+                },
+                "type" : "object"
+             },
+             "links" : [
+                {
+                   "href" : "{node}",
+                   "rel" : "child"
+                }
+             ],
+             "type" : "array"
+          }
+       }
+    },
+    "leaf" : 0,
+    "path" : "/nodes",
+    "text" : "nodes"
+ },
+ {
+    "children" : [
+       {
+          "info" : {
+             "DELETE" : {
+                "allowtoken" : 1,
+                "description" : "Delete storage configuration.",
+                "method" : "DELETE",
+                "name" : "delete",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "storage" : {
+                         "description" : "The storage identifier.",
+                         "format" : "pve-storage-id",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/storage",
+                      [
+                         "Datastore.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             },
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Read storage configuration.",
+                "method" : "GET",
+                "name" : "read",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "storage" : {
+                         "description" : "The storage identifier.",
+                         "format" : "pve-storage-id",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/storage/{storage}",
+                      [
+                         "Datastore.Allocate"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "type" : "object"
+                }
+             },
+             "PUT" : {
+                "allowtoken" : 1,
+                "description" : "Update storage configuration.",
+                "method" : "PUT",
+                "name" : "update",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "blocksize" : {
+                         "description" : "block size",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "bwlimit" : {
+                         "description" : "Set bandwidth/io limits various operations.",
+                         "format" : {
+                            "clone" : {
+                               "description" : "bandwidth limit in KiB/s for cloning disks",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "default" : {
+                               "description" : "default bandwidth limit in KiB/s",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "migration" : {
+                               "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "move" : {
+                               "description" : "bandwidth limit in KiB/s for moving disks",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            },
+                            "restore" : {
+                               "description" : "bandwidth limit in KiB/s for restoring guests from backups",
+                               "format_description" : "LIMIT",
+                               "minimum" : "0",
+                               "optional" : 1,
+                               "type" : "number"
+                            }
+                         },
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
+                      },
+                      "comstar_hg" : {
+                         "description" : "host group for comstar views",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "comstar_tg" : {
+                         "description" : "target group for comstar views",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "content" : {
+                         "description" : "Allowed content types.\n\nNOTE: the value 'rootdir' is used for Containers, and value 'images' for VMs.\n",
+                         "format" : "pve-storage-content-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "data-pool" : {
+                         "description" : "Data Pool (for erasure coding only)",
+                         "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 storage.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "domain" : {
+                         "description" : "CIFS domain.",
+                         "maxLength" : 256,
+                         "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>"
+                      },
+                      "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",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "fs-name" : {
+                         "description" : "The Ceph filesystem name.",
+                         "format" : "pve-configid",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "fuse" : {
+                         "description" : "Mount CephFS through FUSE.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "is_mountpoint" : {
+                         "default" : "no",
+                         "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "keyring" : {
+                         "description" : "Client keyring contents (for external clusters).",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "krbd" : {
+                         "description" : "Always access rbd through krbd kernel module.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "lio_tpg" : {
+                         "description" : "target portal group for Linux LIO targets",
+                         "optional" : 1,
+                         "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>"
+                      },
+                      "max-protected-backups" : {
+                         "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
+                         "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
+                         "minimum" : -1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (-1 - N)"
+                      },
+                      "maxfiles" : {
+                         "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - N)"
+                      },
+                      "mkdir" : {
+                         "default" : "yes",
+                         "description" : "Create the directory if it doesn't exist.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "monhost" : {
+                         "description" : "IP addresses of monitors (for external clusters).",
+                         "format" : "pve-storage-portal-dns-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "mountpoint" : {
+                         "description" : "mount point",
+                         "format" : "pve-storage-path",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "namespace" : {
+                         "description" : "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",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "nowritecache" : {
+                         "description" : "disable write caching on the target",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "options" : {
+                         "description" : "NFS mount options (see 'man nfs')",
+                         "format" : "pve-storage-options",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "password" : {
+                         "description" : "Password for accessing the share/datastore.",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "pool" : {
+                         "description" : "Pool.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "port" : {
+                         "default" : 8007,
+                         "description" : "For non default port.",
+                         "maximum" : 65535,
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - 65535)"
+                      },
+                      "preallocation" : {
+                         "default" : "metadata",
+                         "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
+                         "enum" : [
+                            "off",
+                            "metadata",
+                            "falloc",
+                            "full"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "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.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "saferemove_throughput" : {
+                         "description" : "Wipe throughput (cstream -t parameter value).",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "server" : {
+                         "description" : "Server IP or DNS name.",
+                         "format" : "pve-storage-server",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "server2" : {
+                         "description" : "Backup volfile server IP or DNS name.",
+                         "format" : "pve-storage-server",
+                         "optional" : 1,
+                         "requires" : "server",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "shared" : {
+                         "description" : "Mark storage as shared.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "smbversion" : {
+                         "default" : "default",
+                         "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
+                         "enum" : [
+                            "default",
+                            "2.0",
+                            "2.1",
+                            "3",
+                            "3.0",
+                            "3.11"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "sparse" : {
+                         "description" : "use sparse volumes",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "storage" : {
+                         "description" : "The storage identifier.",
+                         "format" : "pve-storage-id",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "subdir" : {
+                         "description" : "Subdir to mount.",
+                         "format" : "pve-storage-path",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "tagged_only" : {
+                         "description" : "Only use logical volumes tagged with 'pve-vm-ID'.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "transport" : {
+                         "description" : "Gluster transport: tcp or rdma",
+                         "enum" : [
+                            "tcp",
+                            "rdma",
+                            "unix"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "username" : {
+                         "description" : "RBD Id.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   },
+                   "type" : "object"
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/storage",
+                      [
+                         "Datastore.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "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"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/storage/{storage}",
+          "text" : "{storage}"
+       }
+    ],
+    "info" : {
+       "GET" : {
+          "allowtoken" : 1,
+          "description" : "Storage index.",
+          "method" : "GET",
+          "name" : "index",
+          "parameters" : {
+             "additionalProperties" : 0,
+             "properties" : {
+                "type" : {
+                   "description" : "Only list storage of specific type",
+                   "enum" : [
+                      "btrfs",
+                      "cephfs",
+                      "cifs",
+                      "dir",
+                      "glusterfs",
+                      "iscsi",
+                      "iscsidirect",
+                      "lvm",
+                      "lvmthin",
+                      "nfs",
+                      "pbs",
+                      "rbd",
+                      "zfs",
+                      "zfspool"
+                   ],
+                   "optional" : 1,
+                   "type" : "string"
+                }
+             }
+          },
+          "permissions" : {
+             "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/<storage>'",
+             "user" : "all"
+          },
+          "returns" : {
+             "items" : {
+                "properties" : {
+                   "storage" : {
+                      "type" : "string"
+                   }
+                },
+                "type" : "object"
+             },
+             "links" : [
+                {
+                   "href" : "{storage}",
+                   "rel" : "child"
+                }
+             ],
+             "type" : "array"
+          }
+       },
+       "POST" : {
+          "allowtoken" : 1,
+          "description" : "Create a new storage.",
+          "method" : "POST",
+          "name" : "create",
+          "parameters" : {
+             "additionalProperties" : 0,
+             "properties" : {
+                "authsupported" : {
+                   "description" : "Authsupported.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "base" : {
+                   "description" : "Base volume. This volume is automatically activated.",
+                   "format" : "pve-volume-id",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "blocksize" : {
+                   "description" : "block size",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "bwlimit" : {
+                   "description" : "Set bandwidth/io limits various operations.",
+                   "format" : {
+                      "clone" : {
+                         "description" : "bandwidth limit in KiB/s for cloning disks",
+                         "format_description" : "LIMIT",
+                         "minimum" : "0",
+                         "optional" : 1,
+                         "type" : "number"
+                      },
+                      "default" : {
+                         "description" : "default bandwidth limit in KiB/s",
+                         "format_description" : "LIMIT",
+                         "minimum" : "0",
+                         "optional" : 1,
+                         "type" : "number"
+                      },
+                      "migration" : {
+                         "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)",
+                         "format_description" : "LIMIT",
+                         "minimum" : "0",
+                         "optional" : 1,
+                         "type" : "number"
+                      },
+                      "move" : {
+                         "description" : "bandwidth limit in KiB/s for moving disks",
+                         "format_description" : "LIMIT",
+                         "minimum" : "0",
+                         "optional" : 1,
+                         "type" : "number"
+                      },
+                      "restore" : {
+                         "description" : "bandwidth limit in KiB/s for restoring guests from backups",
+                         "format_description" : "LIMIT",
+                         "minimum" : "0",
+                         "optional" : 1,
+                         "type" : "number"
+                      }
+                   },
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "[clone=<LIMIT>] [,default=<LIMIT>] [,migration=<LIMIT>] [,move=<LIMIT>] [,restore=<LIMIT>]"
+                },
+                "comstar_hg" : {
+                   "description" : "host group for comstar views",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "comstar_tg" : {
+                   "description" : "target group for comstar views",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "content" : {
+                   "description" : "Allowed content types.\n\nNOTE: the value 'rootdir' is used for Containers, and value 'images' for VMs.\n",
+                   "format" : "pve-storage-content-list",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "data-pool" : {
+                   "description" : "Data Pool (for erasure coding only)",
+                   "optional" : 1,
+                   "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" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "domain" : {
+                   "description" : "CIFS domain.",
+                   "maxLength" : 256,
+                   "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",
+                   "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",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "fs-name" : {
+                   "description" : "The Ceph filesystem name.",
+                   "format" : "pve-configid",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "fuse" : {
+                   "description" : "Mount CephFS through FUSE.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "is_mountpoint" : {
+                   "default" : "no",
+                   "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "iscsiprovider" : {
+                   "description" : "iscsi provider",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "keyring" : {
+                   "description" : "Client keyring contents (for external clusters).",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "krbd" : {
+                   "description" : "Always access rbd through krbd kernel module.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "lio_tpg" : {
+                   "description" : "target portal group for Linux LIO targets",
+                   "optional" : 1,
+                   "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>"
+                },
+                "max-protected-backups" : {
+                   "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
+                   "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
+                   "minimum" : -1,
+                   "optional" : 1,
+                   "type" : "integer",
+                   "typetext" : "<integer> (-1 - N)"
+                },
+                "maxfiles" : {
+                   "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
+                   "minimum" : 0,
+                   "optional" : 1,
+                   "type" : "integer",
+                   "typetext" : "<integer> (0 - N)"
+                },
+                "mkdir" : {
+                   "default" : "yes",
+                   "description" : "Create the directory if it doesn't exist.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "monhost" : {
+                   "description" : "IP addresses of monitors (for external clusters).",
+                   "format" : "pve-storage-portal-dns-list",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "mountpoint" : {
+                   "description" : "mount point",
+                   "format" : "pve-storage-path",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "namespace" : {
+                   "description" : "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",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "nowritecache" : {
+                   "description" : "disable write caching on the target",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "options" : {
+                   "description" : "NFS mount options (see 'man nfs')",
+                   "format" : "pve-storage-options",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "password" : {
+                   "description" : "Password for accessing the share/datastore.",
+                   "maxLength" : 256,
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "path" : {
+                   "description" : "File system path.",
+                   "format" : "pve-storage-path",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "pool" : {
+                   "description" : "Pool.",
+                   "optional" : 1,
+                   "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",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "preallocation" : {
+                   "default" : "metadata",
+                   "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
+                   "enum" : [
+                      "off",
+                      "metadata",
+                      "falloc",
+                      "full"
+                   ],
+                   "optional" : 1,
+                   "type" : "string"
+                },
+                "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.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "saferemove_throughput" : {
+                   "description" : "Wipe throughput (cstream -t parameter value).",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "server" : {
+                   "description" : "Server IP or DNS name.",
+                   "format" : "pve-storage-server",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "server2" : {
+                   "description" : "Backup volfile server IP or DNS name.",
+                   "format" : "pve-storage-server",
+                   "optional" : 1,
+                   "requires" : "server",
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "share" : {
+                   "description" : "CIFS share.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "shared" : {
+                   "description" : "Mark storage as shared.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "smbversion" : {
+                   "default" : "default",
+                   "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
+                   "enum" : [
+                      "default",
+                      "2.0",
+                      "2.1",
+                      "3",
+                      "3.0",
+                      "3.11"
+                   ],
+                   "optional" : 1,
+                   "type" : "string"
+                },
+                "sparse" : {
+                   "description" : "use sparse volumes",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "storage" : {
+                   "description" : "The storage identifier.",
+                   "format" : "pve-storage-id",
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "subdir" : {
+                   "description" : "Subdir to mount.",
+                   "format" : "pve-storage-path",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "tagged_only" : {
+                   "description" : "Only use logical volumes tagged with 'pve-vm-ID'.",
+                   "optional" : 1,
+                   "type" : "boolean",
+                   "typetext" : "<boolean>"
+                },
+                "target" : {
+                   "description" : "iSCSI target.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "thinpool" : {
+                   "description" : "LVM thin pool LV name.",
+                   "format" : "pve-storage-vgname",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "transport" : {
+                   "description" : "Gluster transport: tcp or rdma",
+                   "enum" : [
+                      "tcp",
+                      "rdma",
+                      "unix"
+                   ],
+                   "optional" : 1,
+                   "type" : "string"
+                },
+                "type" : {
+                   "description" : "Storage type.",
+                   "enum" : [
+                      "btrfs",
+                      "cephfs",
+                      "cifs",
+                      "dir",
+                      "glusterfs",
+                      "iscsi",
+                      "iscsidirect",
+                      "lvm",
+                      "lvmthin",
+                      "nfs",
+                      "pbs",
+                      "rbd",
+                      "zfs",
+                      "zfspool"
+                   ],
+                   "type" : "string"
+                },
+                "username" : {
+                   "description" : "RBD Id.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "vgname" : {
+                   "description" : "Volume group name.",
+                   "format" : "pve-storage-vgname",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "volume" : {
+                   "description" : "Glusterfs Volume.",
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                }
+             },
+             "type" : "object"
+          },
+          "permissions" : {
+             "check" : [
+                "perm",
+                "/storage",
+                [
+                   "Datastore.Allocate"
+                ]
+             ]
+          },
+          "protected" : 1,
+          "returns" : {
+             "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"
+          }
+       }
+    },
+    "leaf" : 0,
+    "path" : "/storage",
+    "text" : "storage"
+ },
+ {
+    "children" : [
+       {
+          "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" : {
+                                  "multiple" : {
+                                     "default" : 0,
+                                     "description" : "Request all entries as an array.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "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"
+                                  },
+                                  "types" : {
+                                     "description" : "Array of the user configured TFA types, if any. Only available if 'multiple' was not passed.",
+                                     "items" : {
+                                        "description" : "A TFA type.",
+                                        "enum" : [
+                                           "totp",
+                                           "u2f",
+                                           "yubico",
+                                           "webauthn",
+                                           "recovedry"
+                                        ],
+                                        "type" : "string"
+                                     },
+                                     "optional" : 1,
+                                     "type" : "array"
+                                  },
+                                  "user" : {
+                                     "description" : "The type of TFA the user has set, if any. Only set if 'multiple' was not passed.",
+                                     "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"
+                                        ],
+                                        [
+                                           "userid-group",
+                                           [
+                                              "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"
+                                        ],
+                                        [
+                                           "userid-group",
+                                           [
+                                              "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"
+                                        ],
+                                        [
+                                           "userid-group",
+                                           [
+                                              "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"
+                                        ],
+                                        [
+                                           "userid-group",
+                                           [
+                                              "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"
+                                  ],
+                                  [
+                                     "userid-group",
+                                     [
+                                        "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "userid" : {
+                               "description" : "User ID",
+                               "format" : "pve-userid",
+                               "maxLength" : 64,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "and",
+                            [
+                               "userid-param",
+                               "Realm.AllocateUser"
+                            ],
+                            [
+                               "userid-group",
+                               [
+                                  "User.Modify"
+                               ]
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get user configuration.",
+                      "method" : "GET",
+                      "name" : "read_user",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "userid" : {
+                               "description" : "User ID",
+                               "format" : "pve-userid",
+                               "maxLength" : 64,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "userid-group",
+                            [
+                               "User.Modify",
+                               "Sys.Audit"
+                            ]
+                         ]
+                      },
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "email" : {
+                               "format" : "email-opt",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "enable" : {
+                               "default" : 1,
+                               "description" : "Enable the account (default). You can set this to '0' to disable the account",
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "expire" : {
+                               "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer"
+                            },
+                            "firstname" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "groups" : {
+                               "items" : {
+                                  "format" : "pve-groupid",
+                                  "type" : "string"
+                               },
+                               "optional" : 1,
+                               "type" : "array"
+                            },
+                            "keys" : {
+                               "description" : "Keys for two factor auth (yubico).",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "lastname" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "tokens" : {
+                               "additionalProperties" : {
+                                  "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"
+                               },
+                               "optional" : 1,
+                               "type" : "object"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update user configuration.",
+                      "method" : "PUT",
+                      "name" : "update_user",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "append" : {
+                               "optional" : 1,
+                               "requires" : "groups",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "comment" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "email" : {
+                               "format" : "email-opt",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "enable" : {
+                               "default" : 1,
+                               "description" : "Enable the account (default). You can set this to '0' to disable the account",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "expire" : {
+                               "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                               "minimum" : 0,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (0 - N)"
+                            },
+                            "firstname" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "groups" : {
+                               "format" : "pve-groupid-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "keys" : {
+                               "description" : "Keys for two factor auth (yubico).",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "lastname" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "userid" : {
+                               "description" : "User ID",
+                               "format" : "pve-userid",
+                               "maxLength" : 64,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "userid-group",
+                            [
+                               "User.Modify"
+                            ],
+                            "groups_param",
+                            "update"
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/access/users/{userid}",
+                "text" : "{userid}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "User index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "enabled" : {
+                         "description" : "Optional filter for enable property.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "full" : {
+                         "default" : 0,
+                         "description" : "Include group and token information.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "description" : "The returned list is restricted to users where you have 'User.Modify' or 'Sys.Audit' permissions on '/access/groups' or on a group the user belongs too. But it always includes the current (authenticated) user.",
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "comment" : {
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "email" : {
+                            "format" : "email-opt",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "enable" : {
+                            "default" : 1,
+                            "description" : "Enable the account (default). You can set this to '0' to disable the account",
+                            "optional" : 1,
+                            "type" : "boolean"
+                         },
+                         "expire" : {
+                            "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                            "minimum" : 0,
+                            "optional" : 1,
+                            "type" : "integer"
+                         },
+                         "firstname" : {
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "groups" : {
+                            "format" : "pve-groupid-list",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "keys" : {
+                            "description" : "Keys for two factor auth (yubico).",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "lastname" : {
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "realm-type" : {
+                            "description" : "The type of the users realm",
+                            "format" : "pve-realm",
+                            "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",
+                            "maxLength" : 64,
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{userid}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Create new user.",
+                "method" : "POST",
+                "name" : "create_user",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "comment" : {
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "email" : {
+                         "format" : "email-opt",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "enable" : {
+                         "default" : 1,
+                         "description" : "Enable the account (default). You can set this to '0' to disable the account",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "expire" : {
+                         "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                         "minimum" : 0,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (0 - N)"
+                      },
+                      "firstname" : {
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "groups" : {
+                         "format" : "pve-groupid-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "keys" : {
+                         "description" : "Keys for two factor auth (yubico).",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "lastname" : {
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "password" : {
+                         "description" : "Initial password.",
+                         "maxLength" : 64,
+                         "minLength" : 5,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "userid" : {
+                         "description" : "User ID",
+                         "format" : "pve-userid",
+                         "maxLength" : 64,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "and",
+                      [
+                         "userid-param",
+                         "Realm.AllocateUser"
+                      ],
+                      [
+                         "userid-group",
+                         [
+                            "User.Modify"
+                         ],
+                         "groups_param",
+                         "create"
+                      ]
+                   ],
+                   "description" : "You need 'Realm.AllocateUser' on '/access/realm/<realm>' on the realm of user <userid>, and 'User.Modify' permissions to '/access/groups/<group>' for any group specified (or 'User.Modify' on '/access/groups' if you pass no groups."
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/users",
+          "text" : "users"
+       },
+       {
+          "children" : [
+             {
+                "info" : {
+                   "DELETE" : {
+                      "allowtoken" : 1,
+                      "description" : "Delete group.",
+                      "method" : "DELETE",
+                      "name" : "delete_group",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "groupid" : {
+                               "format" : "pve-groupid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/groups",
+                            [
+                               "Group.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get group configuration.",
+                      "method" : "GET",
+                      "name" : "read_group",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "groupid" : {
+                               "format" : "pve-groupid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/groups",
+                            [
+                               "Sys.Audit",
+                               "Group.Allocate"
+                            ],
+                            "any",
+                            1
+                         ]
+                      },
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "members" : {
+                               "items" : {
+                                  "description" : "User ID",
+                                  "format" : "pve-userid",
+                                  "maxLength" : 64,
+                                  "type" : "string"
+                               },
+                               "type" : "array"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update group data.",
+                      "method" : "PUT",
+                      "name" : "update_group",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "comment" : {
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "groupid" : {
+                               "format" : "pve-groupid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/groups",
+                            [
+                               "Group.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/access/groups/{groupid}",
+                "text" : "{groupid}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Group index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "description" : "The returned list is restricted to groups where you have 'User.Modify', 'Sys.Audit'  or 'Group.Allocate' permissions on /access/groups/<group>.",
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "comment" : {
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "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"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{groupid}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Create new group.",
+                "method" : "POST",
+                "name" : "create_group",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "comment" : {
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "groupid" : {
+                         "format" : "pve-groupid",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/access/groups",
+                      [
+                         "Group.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/groups",
+          "text" : "groups"
+       },
+       {
+          "children" : [
+             {
+                "info" : {
+                   "DELETE" : {
+                      "allowtoken" : 1,
+                      "description" : "Delete role.",
+                      "method" : "DELETE",
+                      "name" : "delete_role",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "roleid" : {
+                               "format" : "pve-roleid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get role configuration.",
+                      "method" : "GET",
+                      "name" : "read_role",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "roleid" : {
+                               "format" : "pve-roleid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "all"
+                      },
+                      "returns" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "Datastore.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Datastore.AllocateSpace" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Datastore.AllocateTemplate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Datastore.Audit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Group.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Permissions.Modify" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Pool.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Pool.Audit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Realm.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Realm.AllocateUser" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "SDN.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "SDN.Audit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.Audit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.Console" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.Incoming" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.Modify" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.PowerMgmt" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "Sys.Syslog" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "User.Modify" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Allocate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Audit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Backup" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Clone" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.CDROM" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.CPU" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.Cloudinit" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.Disk" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.HWType" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.Memory" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.Network" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Config.Options" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Console" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Migrate" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Monitor" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.PowerMgmt" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Snapshot" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            },
+                            "VM.Snapshot.Rollback" : {
+                               "optional" : 1,
+                               "type" : "boolean"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update an existing role.",
+                      "method" : "PUT",
+                      "name" : "update_role",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "append" : {
+                               "optional" : 1,
+                               "requires" : "privs",
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "privs" : {
+                               "format" : "pve-priv-list",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "roleid" : {
+                               "format" : "pve-roleid",
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access",
+                            [
+                               "Sys.Modify"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/access/roles/{roleid}",
+                "text" : "{roleid}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Role index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "privs" : {
+                            "format" : "pve-priv-list",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "roleid" : {
+                            "format" : "pve-roleid",
+                            "type" : "string"
+                         },
+                         "special" : {
+                            "default" : 0,
+                            "optional" : 1,
+                            "type" : "boolean"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{roleid}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Create new role.",
+                "method" : "POST",
+                "name" : "create_role",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "privs" : {
+                         "format" : "pve-priv-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "roleid" : {
+                         "format" : "pve-roleid",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/access",
+                      [
+                         "Sys.Modify"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/roles",
+          "text" : "roles"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Get Access Control List (ACLs).",
+                "method" : "GET",
+                "name" : "read_acl",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "description" : "The returned list is restricted to objects where you have rights to modify permissions.",
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "additionalProperties" : 0,
+                      "properties" : {
+                         "path" : {
+                            "description" : "Access control path",
+                            "type" : "string"
+                         },
+                         "propagate" : {
+                            "default" : 1,
+                            "description" : "Allow to propagate (inherit) permissions.",
+                            "optional" : 1,
+                            "type" : "boolean"
+                         },
+                         "roleid" : {
+                            "type" : "string"
+                         },
+                         "type" : {
+                            "enum" : [
+                               "user",
+                               "group",
+                               "token"
+                            ],
+                            "type" : "string"
+                         },
+                         "ugid" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "type" : "array"
+                }
+             },
+             "PUT" : {
+                "allowtoken" : 1,
+                "description" : "Update Access Control List (add or remove permissions).",
+                "method" : "PUT",
+                "name" : "update_acl",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "delete" : {
+                         "description" : "Remove permissions (instead of adding it).",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "groups" : {
+                         "description" : "List of groups.",
+                         "format" : "pve-groupid-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "path" : {
+                         "description" : "Access control path",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "propagate" : {
+                         "default" : 1,
+                         "description" : "Allow to propagate (inherit) permissions.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "roles" : {
+                         "description" : "List of roles.",
+                         "format" : "pve-roleid-list",
+                         "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",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm-modify",
+                      "{path}"
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/access/acl",
+          "text" : "acl"
+       },
+       {
+          "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" : "DEPRECATED: use 'remove-vanished' instead. If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync and removing all locally modified properties of synced users. If not set, only syncs information which is present in the synced data, and does not delete or modify anything else.",
+                                     "optional" : "1",
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "purge" : {
+                                     "description" : "DEPRECATED: use 'remove-vanished' instead. 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>"
+                                  },
+                                  "remove-vanished" : {
+                                     "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync.",
+                                     "optional" : "1",
+                                     "pattern" : "(?:(?:acl|properties|entry);)*(?:acl|properties|entry)",
+                                     "type" : "string",
+                                     "typetext" : "[acl];[properties];[entry]"
+                                  },
+                                  "scope" : {
+                                     "description" : "Select what to sync.",
+                                     "enum" : [
+                                        "users",
+                                        "groups",
+                                        "both"
+                                     ],
+                                     "optional" : "1",
+                                     "type" : "string"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "and",
+                                  [
+                                     "perm",
+                                     "/access/realm/{realm}",
+                                     [
+                                        "Realm.AllocateUser"
+                                     ]
+                                  ],
+                                  [
+                                     "perm",
+                                     "/access/groups",
+                                     [
+                                        "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",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "realm" : {
+                               "description" : "Authentication domain ID",
+                               "format" : "pve-realm",
+                               "maxLength" : 32,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/realm",
+                            [
+                               "Realm.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   },
+                   "GET" : {
+                      "allowtoken" : 1,
+                      "description" : "Get auth server configuration.",
+                      "method" : "GET",
+                      "name" : "read",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "realm" : {
+                               "description" : "Authentication domain ID",
+                               "format" : "pve-realm",
+                               "maxLength" : 32,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/realm",
+                            [
+                               "Realm.Allocate",
+                               "Sys.Audit"
+                            ],
+                            "any",
+                            1
+                         ]
+                      },
+                      "returns" : {}
+                   },
+                   "PUT" : {
+                      "allowtoken" : 1,
+                      "description" : "Update authentication server settings.",
+                      "method" : "PUT",
+                      "name" : "update",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "acr-values" : {
+                               "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "autocreate" : {
+                               "default" : 0,
+                               "description" : "Automatically create users if they do not exist.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "base_dn" : {
+                               "description" : "LDAP base domain name",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                               "type" : "string"
+                            },
+                            "bind_dn" : {
+                               "description" : "LDAP bind domain name",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                               "type" : "string"
+                            },
+                            "capath" : {
+                               "default" : "/etc/ssl/certs",
+                               "description" : "Path to the CA certificate store",
+                               "optional" : 1,
+                               "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,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "certkey" : {
+                               "description" : "Path to the client certificate key",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "client-id" : {
+                               "description" : "OpenID Client ID",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "client-key" : {
+                               "description" : "OpenID Client Key",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "comment" : {
+                               "description" : "Description.",
+                               "maxLength" : 4096,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "default" : {
+                               "description" : "Use this as default realm",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "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>"
+                            },
+                            "domain" : {
+                               "description" : "AD domain name",
+                               "maxLength" : 256,
+                               "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>"
+                            },
+                            "issuer-url" : {
+                               "description" : "OpenID Issuer Url",
+                               "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,
+                               "minimum" : 1,
+                               "optional" : 1,
+                               "type" : "integer",
+                               "typetext" : "<integer> (1 - 65535)"
+                            },
+                            "prompt" : {
+                               "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
+                               "optional" : 1,
+                               "pattern" : "(?:none|login|consent|select_account|\\S+)",
+                               "type" : "string"
+                            },
+                            "realm" : {
+                               "description" : "Authentication domain ID",
+                               "format" : "pve-realm",
+                               "maxLength" : 32,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "scopes" : {
+                               "default" : "email profile",
+                               "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "secure" : {
+                               "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            },
+                            "server1" : {
+                               "description" : "Server IP address (or DNS name)",
+                               "format" : "address",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "server2" : {
+                               "description" : "Fallback Server IP address (or DNS name)",
+                               "format" : "address",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "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>] [,remove-vanished=[acl];[properties];[entry]] [,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",
+                               "maxLength" : 128,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "type=<TFATYPE> [,digits=<COUNT>] [,id=<ID>] [,key=<KEY>] [,step=<SECONDS>] [,url=<URL>]"
+                            },
+                            "user_attr" : {
+                               "description" : "LDAP user attribute name",
+                               "maxLength" : 256,
+                               "optional" : 1,
+                               "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",
+                               "optional" : 1,
+                               "type" : "boolean",
+                               "typetext" : "<boolean>"
+                            }
+                         },
+                         "type" : "object"
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "perm",
+                            "/access/realm",
+                            [
+                               "Realm.Allocate"
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "type" : "null"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/access/domains/{realm}",
+                "text" : "{realm}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Authentication domain index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "description" : "Anyone can access that, because we need that list for the login box (before the user is authenticated).",
+                   "user" : "world"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "comment" : {
+                            "description" : "A comment. The GUI use this text when you select a domain (Realm) on the login window.",
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "realm" : {
+                            "type" : "string"
+                         },
+                         "tfa" : {
+                            "description" : "Two-factor authentication provider.",
+                            "enum" : [
+                               "yubico",
+                               "oath"
+                            ],
+                            "optional" : 1,
+                            "type" : "string"
+                         },
+                         "type" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{realm}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 1,
+                "description" : "Add an authentication server.",
+                "method" : "POST",
+                "name" : "create",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "acr-values" : {
+                         "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "autocreate" : {
+                         "default" : 0,
+                         "description" : "Automatically create users if they do not exist.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "base_dn" : {
+                         "description" : "LDAP base domain name",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                         "type" : "string"
+                      },
+                      "bind_dn" : {
+                         "description" : "LDAP bind domain name",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                         "type" : "string"
+                      },
+                      "capath" : {
+                         "default" : "/etc/ssl/certs",
+                         "description" : "Path to the CA certificate store",
+                         "optional" : 1,
+                         "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,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "certkey" : {
+                         "description" : "Path to the client certificate key",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "client-id" : {
+                         "description" : "OpenID Client ID",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "client-key" : {
+                         "description" : "OpenID Client Key",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "comment" : {
+                         "description" : "Description.",
+                         "maxLength" : 4096,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "default" : {
+                         "description" : "Use this as default realm",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "domain" : {
+                         "description" : "AD domain name",
+                         "maxLength" : 256,
+                         "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>"
+                      },
+                      "issuer-url" : {
+                         "description" : "OpenID Issuer Url",
+                         "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,
+                         "minimum" : 1,
+                         "optional" : 1,
+                         "type" : "integer",
+                         "typetext" : "<integer> (1 - 65535)"
+                      },
+                      "prompt" : {
+                         "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
+                         "optional" : 1,
+                         "pattern" : "(?:none|login|consent|select_account|\\S+)",
+                         "type" : "string"
+                      },
+                      "realm" : {
+                         "description" : "Authentication domain ID",
+                         "format" : "pve-realm",
+                         "maxLength" : 32,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "scopes" : {
+                         "default" : "email profile",
+                         "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "secure" : {
+                         "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "server1" : {
+                         "description" : "Server IP address (or DNS name)",
+                         "format" : "address",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "server2" : {
+                         "description" : "Fallback Server IP address (or DNS name)",
+                         "format" : "address",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "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>] [,remove-vanished=[acl];[properties];[entry]] [,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",
+                         "maxLength" : 128,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "type=<TFATYPE> [,digits=<COUNT>] [,id=<ID>] [,key=<KEY>] [,step=<SECONDS>] [,url=<URL>]"
+                      },
+                      "type" : {
+                         "description" : "Realm type.",
+                         "enum" : [
+                            "ad",
+                            "ldap",
+                            "openid",
+                            "pam",
+                            "pve"
+                         ],
+                         "type" : "string"
+                      },
+                      "user_attr" : {
+                         "description" : "LDAP user attribute name",
+                         "maxLength" : 256,
+                         "optional" : 1,
+                         "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>"
+                      },
+                      "username-claim" : {
+                         "description" : "OpenID claim used to generate the unique username.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "verify" : {
+                         "default" : 0,
+                         "description" : "Verify the server's SSL certificate",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      }
+                   },
+                   "type" : "object"
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/access/realm",
+                      [
+                         "Realm.Allocate"
+                      ]
+                   ]
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/domains",
+          "text" : "domains"
+       },
+       {
+          "children" : [
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : "Get the OpenId Authorization Url for the specified realm.",
+                      "method" : "POST",
+                      "name" : "auth_url",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "realm" : {
+                               "description" : "Authentication domain ID",
+                               "format" : "pve-realm",
+                               "maxLength" : 32,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "redirect-url" : {
+                               "description" : "Redirection Url. The client should set this to the used server url (location.origin).",
+                               "maxLength" : 255,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "world"
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "description" : "Redirection URL.",
+                         "type" : "string"
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/access/openid/auth-url",
+                "text" : "auth-url"
+             },
+             {
+                "info" : {
+                   "POST" : {
+                      "allowtoken" : 1,
+                      "description" : " Verify OpenID authorization code and create a ticket.",
+                      "method" : "POST",
+                      "name" : "login",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "code" : {
+                               "description" : "OpenId authorization code.",
+                               "maxLength" : 4096,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "redirect-url" : {
+                               "description" : "Redirection Url. The client should set this to the used server url (location.origin).",
+                               "maxLength" : 255,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "state" : {
+                               "description" : "OpenId state.",
+                               "maxLength" : 1024,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "user" : "world"
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "properties" : {
+                            "CSRFPreventionToken" : {
+                               "type" : "string"
+                            },
+                            "cap" : {
+                               "type" : "object"
+                            },
+                            "clustername" : {
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "ticket" : {
+                               "type" : "string"
+                            },
+                            "username" : {
+                               "type" : "string"
+                            }
+                         }
+                      }
+                   }
+                },
+                "leaf" : 1,
+                "path" : "/access/openid/login",
+                "text" : "login"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Directory index.",
+                "method" : "GET",
+                "name" : "index",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "returns" : {
+                   "items" : {
+                      "properties" : {
+                         "subdir" : {
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "links" : [
+                      {
+                         "href" : "{subdir}",
+                         "rel" : "child"
+                      }
+                   ],
+                   "type" : "array"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/openid",
+          "text" : "openid"
+       },
+       {
+          "children" : [
+             {
+                "children" : [
+                   {
+                      "info" : {
+                         "DELETE" : {
+                            "allowtoken" : 0,
+                            "description" : "Delete a TFA entry by ID.",
+                            "method" : "DELETE",
+                            "name" : "delete_tfa",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "id" : {
+                                     "description" : "A TFA entry id.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "password" : {
+                                     "description" : "The current password.",
+                                     "maxLength" : 64,
+                                     "minLength" : 5,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "userid" : {
+                                     "description" : "User ID",
+                                     "format" : "pve-userid",
+                                     "maxLength" : 64,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "or",
+                                  [
+                                     "userid-param",
+                                     "self"
+                                  ],
+                                  [
+                                     "userid-group",
+                                     [
+                                        "User.Modify"
+                                     ]
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         },
+                         "GET" : {
+                            "allowtoken" : 0,
+                            "description" : "Fetch a requested TFA entry if present.",
+                            "method" : "GET",
+                            "name" : "get_tfa_entry",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "id" : {
+                                     "description" : "A TFA entry id.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "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" : {
+                               "description" : "TFA Entry.",
+                               "properties" : {
+                                  "created" : {
+                                     "description" : "Creation time of this entry as unix epoch.",
+                                     "type" : "integer"
+                                  },
+                                  "description" : {
+                                     "description" : "User chosen description for this entry.",
+                                     "type" : "string"
+                                  },
+                                  "enable" : {
+                                     "default" : 1,
+                                     "description" : "Whether this TFA entry is currently enabled.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "id" : {
+                                     "description" : "The id used to reference this entry.",
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "description" : "TFA Entry Type.",
+                                     "enum" : [
+                                        "totp",
+                                        "u2f",
+                                        "webauthn",
+                                        "recovery",
+                                        "yubico"
+                                     ],
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            }
+                         },
+                         "PUT" : {
+                            "allowtoken" : 0,
+                            "description" : "Add a TFA entry for a user.",
+                            "method" : "PUT",
+                            "name" : "update_tfa_entry",
+                            "parameters" : {
+                               "additionalProperties" : 0,
+                               "properties" : {
+                                  "description" : {
+                                     "description" : "A description to distinguish multiple entries from one another",
+                                     "maxLength" : 255,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "enable" : {
+                                     "description" : "Whether the entry should be enabled for login.",
+                                     "optional" : 1,
+                                     "type" : "boolean",
+                                     "typetext" : "<boolean>"
+                                  },
+                                  "id" : {
+                                     "description" : "A TFA entry id.",
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "password" : {
+                                     "description" : "The current password.",
+                                     "maxLength" : 64,
+                                     "minLength" : 5,
+                                     "optional" : 1,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  },
+                                  "userid" : {
+                                     "description" : "User ID",
+                                     "format" : "pve-userid",
+                                     "maxLength" : 64,
+                                     "type" : "string",
+                                     "typetext" : "<string>"
+                                  }
+                               }
+                            },
+                            "permissions" : {
+                               "check" : [
+                                  "or",
+                                  [
+                                     "userid-param",
+                                     "self"
+                                  ],
+                                  [
+                                     "userid-group",
+                                     [
+                                        "User.Modify"
+                                     ]
+                                  ]
+                               ]
+                            },
+                            "protected" : 1,
+                            "returns" : {
+                               "type" : "null"
+                            }
+                         }
+                      },
+                      "leaf" : 1,
+                      "path" : "/access/tfa/{userid}/{id}",
+                      "text" : "{id}"
+                   }
+                ],
+                "info" : {
+                   "GET" : {
+                      "allowtoken" : 0,
+                      "description" : "List TFA configurations of users.",
+                      "method" : "GET",
+                      "name" : "list_user_tfa",
+                      "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" : {
+                         "description" : "A list of the user's TFA entries.",
+                         "items" : {
+                            "description" : "TFA Entry.",
+                            "properties" : {
+                               "created" : {
+                                  "description" : "Creation time of this entry as unix epoch.",
+                                  "type" : "integer"
+                               },
+                               "description" : {
+                                  "description" : "User chosen description for this entry.",
+                                  "type" : "string"
+                               },
+                               "enable" : {
+                                  "default" : 1,
+                                  "description" : "Whether this TFA entry is currently enabled.",
+                                  "optional" : 1,
+                                  "type" : "boolean"
+                               },
+                               "id" : {
+                                  "description" : "The id used to reference this entry.",
+                                  "type" : "string"
+                               },
+                               "type" : {
+                                  "description" : "TFA Entry Type.",
+                                  "enum" : [
+                                     "totp",
+                                     "u2f",
+                                     "webauthn",
+                                     "recovery",
+                                     "yubico"
+                                  ],
+                                  "type" : "string"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   },
+                   "POST" : {
+                      "allowtoken" : 0,
+                      "description" : "Add a TFA entry for a user.",
+                      "method" : "POST",
+                      "name" : "add_tfa_entry",
+                      "parameters" : {
+                         "additionalProperties" : 0,
+                         "properties" : {
+                            "challenge" : {
+                               "description" : "When responding to a u2f challenge: the original challenge string",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "description" : {
+                               "description" : "A description to distinguish multiple entries from one another",
+                               "maxLength" : 255,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "password" : {
+                               "description" : "The current password.",
+                               "maxLength" : 64,
+                               "minLength" : 5,
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "totp" : {
+                               "description" : "A totp URI.",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "type" : {
+                               "description" : "TFA Entry Type.",
+                               "enum" : [
+                                  "totp",
+                                  "u2f",
+                                  "webauthn",
+                                  "recovery",
+                                  "yubico"
+                               ],
+                               "type" : "string"
+                            },
+                            "userid" : {
+                               "description" : "User ID",
+                               "format" : "pve-userid",
+                               "maxLength" : 64,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            },
+                            "value" : {
+                               "description" : "The current value for the provided totp URI, or a Webauthn/U2F challenge response",
+                               "optional" : 1,
+                               "type" : "string",
+                               "typetext" : "<string>"
+                            }
+                         }
+                      },
+                      "permissions" : {
+                         "check" : [
+                            "or",
+                            [
+                               "userid-param",
+                               "self"
+                            ],
+                            [
+                               "userid-group",
+                               [
+                                  "User.Modify"
+                               ]
+                            ]
+                         ]
+                      },
+                      "protected" : 1,
+                      "returns" : {
+                         "properties" : {
+                            "challenge" : {
+                               "description" : "When adding u2f entries, this contains a challenge the user must respond to in order to finish the registration.",
+                               "optional" : 1,
+                               "type" : "string"
+                            },
+                            "id" : {
+                               "description" : "The id of a newly added TFA entry.",
+                               "type" : "string"
+                            },
+                            "recovery" : {
+                               "description" : "When adding recovery codes, this contains the list of codes to be displayed to the user",
+                               "items" : {
+                                  "description" : "A recovery entry.",
+                                  "type" : "string"
+                               },
+                               "optional" : 1,
+                               "type" : "array"
+                            }
+                         },
+                         "type" : "object"
+                      }
+                   }
+                },
+                "leaf" : 0,
+                "path" : "/access/tfa/{userid}",
+                "text" : "{userid}"
+             }
+          ],
+          "info" : {
+             "GET" : {
+                "allowtoken" : 0,
+                "description" : "List TFA configurations of users.",
+                "method" : "GET",
+                "name" : "list_tfa",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "description" : "Returns all or just the logged-in user, depending on privileges.",
+                   "user" : "all"
+                },
+                "protected" : 1,
+                "returns" : {
+                   "description" : "The list tuples of user and TFA entries.",
+                   "items" : {
+                      "properties" : {
+                         "entries" : {
+                            "items" : {
+                               "description" : "TFA Entry.",
+                               "properties" : {
+                                  "created" : {
+                                     "description" : "Creation time of this entry as unix epoch.",
+                                     "type" : "integer"
+                                  },
+                                  "description" : {
+                                     "description" : "User chosen description for this entry.",
+                                     "type" : "string"
+                                  },
+                                  "enable" : {
+                                     "default" : 1,
+                                     "description" : "Whether this TFA entry is currently enabled.",
+                                     "optional" : 1,
+                                     "type" : "boolean"
+                                  },
+                                  "id" : {
+                                     "description" : "The id used to reference this entry.",
+                                     "type" : "string"
+                                  },
+                                  "type" : {
+                                     "description" : "TFA Entry Type.",
+                                     "enum" : [
+                                        "totp",
+                                        "u2f",
+                                        "webauthn",
+                                        "recovery",
+                                        "yubico"
+                                     ],
+                                     "type" : "string"
+                                  }
+                               },
+                               "type" : "object"
+                            },
+                            "type" : "array"
+                         },
+                         "userid" : {
+                            "description" : "User this entry belongs to.",
+                            "type" : "string"
+                         }
+                      },
+                      "type" : "object"
+                   },
+                   "type" : "array"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 0,
+                "description" : "Finish a u2f challenge.",
+                "method" : "POST",
+                "name" : "verify_tfa",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "response" : {
+                         "description" : "The response to the current authentication challenge.",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "user" : "all"
+                },
+                "protected" : 1,
+                "returns" : {
+                   "properties" : {
+                      "ticket" : {
+                         "type" : "string"
+                      }
+                   },
+                   "type" : "object"
+                }
+             }
+          },
+          "leaf" : 0,
+          "path" : "/access/tfa",
+          "text" : "tfa"
+       },
+       {
+          "info" : {
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Dummy. Useful for formatters which want to provide a login page.",
+                "method" : "GET",
+                "name" : "get_ticket",
+                "parameters" : {
+                   "additionalProperties" : 0
+                },
+                "permissions" : {
+                   "user" : "world"
+                },
+                "returns" : {
+                   "type" : "null"
+                }
+             },
+             "POST" : {
+                "allowtoken" : 0,
+                "description" : "Create or verify authentication ticket.",
+                "method" : "POST",
+                "name" : "create_ticket",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "new-format" : {
+                         "default" : 0,
+                         "description" : "With webauthn the format of half-authenticated tickts changed. New clients should pass 1 here and not worry about the old format. The old format is deprecated and will be retired with PVE-8.0",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "otp" : {
+                         "description" : "One-time password for Two-factor authentication.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "password" : {
+                         "description" : "The secret password. This can also be a valid ticket.",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "path" : {
+                         "description" : "Verify ticket, and check if user have access 'privs' on 'path'",
+                         "maxLength" : 64,
+                         "optional" : 1,
+                         "requires" : "privs",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "privs" : {
+                         "description" : "Verify ticket, and check if user have access 'privs' on 'path'",
+                         "format" : "pve-priv-list",
+                         "maxLength" : 64,
+                         "optional" : 1,
+                         "requires" : "path",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "realm" : {
+                         "description" : "You can optionally pass the realm using this parameter. Normally the realm is simply added to the username <username>@<relam>.",
+                         "format" : "pve-realm",
+                         "maxLength" : 32,
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "tfa-challenge" : {
+                         "description" : "The signed TFA challenge string the user wants to respond to.",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "username" : {
+                         "description" : "User name",
+                         "maxLength" : 64,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "description" : "You need to pass valid credientials.",
+                   "user" : "world"
+                },
+                "protected" : 1,
+                "returns" : {
+                   "properties" : {
+                      "CSRFPreventionToken" : {
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "clustername" : {
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "ticket" : {
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "username" : {
+                         "type" : "string"
+                      }
+                   },
+                   "type" : "object"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/access/ticket",
+          "text" : "ticket"
+       },
+       {
+          "info" : {
+             "PUT" : {
+                "allowtoken" : 0,
+                "description" : "Change user password.",
+                "method" : "PUT",
+                "name" : "change_password",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "password" : {
+                         "description" : "The new password.",
+                         "maxLength" : 64,
+                         "minLength" : 5,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "userid" : {
+                         "description" : "User ID",
+                         "format" : "pve-userid",
+                         "maxLength" : 64,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "or",
+                      [
+                         "userid-param",
+                         "self"
+                      ],
+                      [
+                         "and",
+                         [
+                            "userid-param",
+                            "Realm.AllocateUser"
+                         ],
+                         [
+                            "userid-group",
+                            [
+                               "User.Modify"
+                            ]
+                         ]
+                      ]
+                   ],
+                   "description" : "Each user is allowed to change his own password. A user can change the password of another user if he has 'Realm.AllocateUser' (on the realm of user <userid>) and 'User.Modify' permission on /access/groups/<group> on a group where user <userid> is member of."
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/access/password",
+          "text" : "password"
+       },
+       {
+          "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",
+          "parameters" : {
+             "additionalProperties" : 0
+          },
+          "permissions" : {
+             "user" : "all"
+          },
+          "returns" : {
+             "items" : {
+                "properties" : {
+                   "subdir" : {
+                      "type" : "string"
+                   }
+                },
+                "type" : "object"
+             },
+             "links" : [
+                {
+                   "href" : "{subdir}",
+                   "rel" : "child"
+                }
+             ],
+             "type" : "array"
+          }
+       }
+    },
+    "leaf" : 0,
+    "path" : "/access",
+    "text" : "access"
+ },
+ {
+    "children" : [
+       {
+          "info" : {
+             "DELETE" : {
+                "allowtoken" : 1,
+                "description" : "Delete pool.",
+                "method" : "DELETE",
+                "name" : "delete_pool",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "poolid" : {
+                         "format" : "pve-poolid",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/pool/{poolid}",
+                      [
+                         "Pool.Allocate"
+                      ]
+                   ],
+                   "description" : "You can only delete empty pools (no members)."
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             },
+             "GET" : {
+                "allowtoken" : 1,
+                "description" : "Get pool configuration.",
+                "method" : "GET",
+                "name" : "read_pool",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "poolid" : {
+                         "format" : "pve-poolid",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "type" : {
+                         "enum" : [
+                            "qemu",
+                            "lxc",
+                            "storage"
+                         ],
+                         "optional" : 1,
+                         "type" : "string"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/pool/{poolid}",
+                      [
+                         "Pool.Audit"
+                      ]
+                   ]
+                },
+                "returns" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "comment" : {
+                         "optional" : 1,
+                         "type" : "string"
+                      },
+                      "members" : {
+                         "items" : {
+                            "additionalProperties" : 1,
+                            "properties" : {
+                               "id" : {
+                                  "type" : "string"
+                               },
+                               "node" : {
+                                  "type" : "string"
+                               },
+                               "storage" : {
+                                  "optional" : 1,
+                                  "type" : "string"
+                               },
+                               "type" : {
+                                  "enum" : [
+                                     "qemu",
+                                     "lxc",
+                                     "openvz",
+                                     "storage"
+                                  ],
+                                  "type" : "string"
+                               },
+                               "vmid" : {
+                                  "optional" : 1,
+                                  "type" : "integer"
+                               }
+                            },
+                            "type" : "object"
+                         },
+                         "type" : "array"
+                      }
+                   },
+                   "type" : "object"
+                }
+             },
+             "PUT" : {
+                "allowtoken" : 1,
+                "description" : "Update pool data.",
+                "method" : "PUT",
+                "name" : "update_pool",
+                "parameters" : {
+                   "additionalProperties" : 0,
+                   "properties" : {
+                      "comment" : {
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "delete" : {
+                         "description" : "Remove vms/storage (instead of adding it).",
+                         "optional" : 1,
+                         "type" : "boolean",
+                         "typetext" : "<boolean>"
+                      },
+                      "poolid" : {
+                         "format" : "pve-poolid",
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "storage" : {
+                         "description" : "List of storage IDs.",
+                         "format" : "pve-storage-id-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      },
+                      "vms" : {
+                         "description" : "List of virtual machines.",
+                         "format" : "pve-vmid-list",
+                         "optional" : 1,
+                         "type" : "string",
+                         "typetext" : "<string>"
+                      }
+                   }
+                },
+                "permissions" : {
+                   "check" : [
+                      "perm",
+                      "/pool/{poolid}",
+                      [
+                         "Pool.Allocate"
+                      ]
+                   ],
+                   "description" : "You also need the right to modify permissions on any object you add/delete."
+                },
+                "protected" : 1,
+                "returns" : {
+                   "type" : "null"
+                }
+             }
+          },
+          "leaf" : 1,
+          "path" : "/pools/{poolid}",
+          "text" : "{poolid}"
+       }
+    ],
+    "info" : {
+       "GET" : {
+          "allowtoken" : 1,
+          "description" : "Pool index.",
+          "method" : "GET",
+          "name" : "index",
+          "parameters" : {
+             "additionalProperties" : 0
+          },
+          "permissions" : {
+             "description" : "List all pools where you have Pool.Audit permissions on /pool/<pool>.",
+             "user" : "all"
+          },
+          "returns" : {
+             "items" : {
+                "properties" : {
+                   "poolid" : {
+                      "type" : "string"
+                   }
+                },
+                "type" : "object"
+             },
+             "links" : [
+                {
+                   "href" : "{poolid}",
+                   "rel" : "child"
+                }
+             ],
+             "type" : "array"
+          }
+       },
+       "POST" : {
+          "allowtoken" : 1,
+          "description" : "Create new pool.",
+          "method" : "POST",
+          "name" : "create_pool",
+          "parameters" : {
+             "additionalProperties" : 0,
+             "properties" : {
+                "comment" : {
+                   "optional" : 1,
+                   "type" : "string",
+                   "typetext" : "<string>"
+                },
+                "poolid" : {
+                   "format" : "pve-poolid",
+                   "type" : "string",
+                   "typetext" : "<string>"
+                }
+             }
+          },
+          "permissions" : {
+             "check" : [
+                "perm",
+                "/pool/{poolid}",
+                [
+                   "Pool.Allocate"
+                ]
+             ]
+          },
+          "protected" : 1,
+          "returns" : {
+             "type" : "null"
+          }
+       }
+    },
+    "leaf" : 0,
+    "path" : "/pools",
+    "text" : "pools"
+ },
+ {
+    "info" : {
+       "GET" : {
+          "allowtoken" : 1,
+          "description" : "API version details, including some parts of the global datacenter config.",
+          "method" : "GET",
+          "name" : "version",
+          "parameters" : {
+             "additionalProperties" : 0
+          },
+          "permissions" : {
+             "user" : "all"
+          },
+          "returns" : {
+             "properties" : {
+                "console" : {
+                   "description" : "The default console viewer to use.",
+                   "enum" : [
+                      "applet",
+                      "vv",
+                      "html5",
+                      "xtermjs"
+                   ],
+                   "optional" : 1,
+                   "type" : "string"
+                },
+                "release" : {
+                   "description" : "The current Proxmox VE point release in `x.y` format.",
+                   "type" : "string"
+                },
+                "repoid" : {
+                   "description" : "The short git revision from which this version was build.",
+                   "type" : "string"
+                },
+                "version" : {
+                   "description" : "The full pve-manager package version of this node.",
+                   "type" : "string"
+                }
+             },
+             "type" : "object"
+          }
+       }
+    },
+    "leaf" : 1,
+    "path" : "/version",
+    "text" : "version"
+ }
+]
+
diff --git a/extractapi.pl b/extractapi.pl
index 2144f17..eb54054 100755
--- a/extractapi.pl
+++ b/extractapi.pl
@@ -10,6 +10,6 @@ use JSON;
 
 my $tree = PVE::RESTHandler::api_dump_remove_refs(PVE::RESTHandler::api_dump('PVE::API2'));
 
-print "const apiSchema = " . to_json($tree, {pretty => 1, canonical => 1}) . ";\n\n";
+print to_json($tree, {pretty => 1, canonical => 1}) . "\n";
 
 exit(0);
-- 
2.39.0





More information about the pve-devel mailing list