improve update target, update all auto-generated files
authorDietmar Maurer <dietmar@proxmox.com>
Sat, 30 Apr 2016 09:35:45 +0000 (11:35 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Sat, 30 Apr 2016 09:35:45 +0000 (11:35 +0200)
Makefile
README.adoc
api-viewer/apidata.js
pct.1-synopsis.adoc
pvesm.1-synopsis.adoc
qm.1-synopsis.adoc
qm.conf.5-opts.adoc

index 93c0b53..48c364d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -260,8 +260,9 @@ upload: ${GEN_DEB} ${DOC_DEB}
 
 .PHONY: update
 update: clean
-       rm -f *.5-opts.adoc .1-synopsis.adoc .8-synopsis.adoc
+       rm -f *.5-opts.adoc *.1-synopsis.adoc *.8-synopsis.adoc
        rm -f api-viewer/apidata.js
+       rm -f pve-firewall-macros.adoc
        make all
 
 clean:
index 173a544..ed03114 100644 (file)
@@ -16,11 +16,17 @@ When possible, we provide scripts to extract API definitions,
 configuration or command line options from the source code.
 
 To simplify the documentation task, we keep all Documentation within
-this repository. It is possible to generate the docs (without installing
-any additional Proxmox packages) with:
+this repository. It is possible to generate the docs without installing
+any additional Proxmox packages with:
 
  make index
 
+To update the auto-generate API definitions use:
+
+ make update
+
+NOTE: you need a fully installed development environment for that.
+
 
 Debian Packages
 ---------------
index 59754f0..26307a5 100644 (file)
 var pveapi = [
    {
       "leaf" : 0,
-      "text" : "cluster",
+      "path" : "/cluster",
+      "info" : {
+         "GET" : {
+            "method" : "GET",
+            "returns" : {
+               "links" : [
+                  {
+                     "rel" : "child",
+                     "href" : "{name}"
+                  }
+               ],
+               "items" : {
+                  "type" : "object",
+                  "properties" : {}
+               },
+               "type" : "array"
+            },
+            "permissions" : {
+               "user" : "all"
+            },
+            "parameters" : {
+               "additionalProperties" : 0
+            },
+            "name" : "index",
+            "description" : "Cluster index."
+         }
+      },
       "children" : [
          {
-            "leaf" : 0,
-            "text" : "firewall",
             "info" : {
                "GET" : {
-                  "name" : "index",
                   "method" : "GET",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
                   "returns" : {
+                     "type" : "array",
                      "items" : {
                         "type" : "object",
                         "properties" : {}
                      },
-                     "type" : "array",
                      "links" : [
                         {
-                           "href" : "{name}",
-                           "rel" : "child"
+                           "rel" : "child",
+                           "href" : "{name}"
                         }
                      ]
                   },
                   "description" : "Directory index.",
                   "permissions" : {
                      "user" : "all"
-                  }
+                  },
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "name" : "index"
                }
             },
+            "text" : "firewall",
             "children" : [
                {
-                  "leaf" : 0,
+                  "info" : {
+                     "GET" : {
+                        "method" : "GET",
+                        "returns" : {
+                           "type" : "array",
+                           "links" : [
+                              {
+                                 "href" : "{group}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "items" : {
+                              "properties" : {
+                                 "group" : {
+                                    "maxLength" : 20,
+                                    "minLength" : 2,
+                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                    "description" : "Security Group name.",
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                    "optional" : 0,
+                                    "type" : "string",
+                                    "maxLength" : 40
+                                 },
+                                 "comment" : {
+                                    "type" : "string",
+                                    "optional" : 1
+                                 }
+                              },
+                              "type" : "object"
+                           }
+                        },
+                        "description" : "List security groups.",
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "name" : "list_security_groups"
+                     },
+                     "POST" : {
+                        "returns" : {
+                           "type" : "null"
+                        },
+                        "method" : "POST",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "group" : {
+                                 "maxLength" : 20,
+                                 "description" : "Security Group name.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "minLength" : 2,
+                                 "type" : "string"
+                              },
+                              "digest" : {
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
+                              },
+                              "rename" : {
+                                 "maxLength" : 20,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "minLength" : 2,
+                                 "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.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+"
+                              },
+                              "comment" : {
+                                 "type" : "string",
+                                 "optional" : 1
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "name" : "create_security_group",
+                        "description" : "Create new security group.",
+                        "protected" : 1
+                     }
+                  },
                   "text" : "groups",
-                  "path" : "/cluster/firewall/groups",
                   "children" : [
                      {
-                        "children" : [
-                           {
-                              "leaf" : 1,
-                              "text" : "{pos}",
-                              "info" : {
-                                 "PUT" : {
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
+                        "leaf" : 0,
+                        "path" : "/cluster/firewall/groups/{group}",
+                        "info" : {
+                           "GET" : {
+                              "proxyto" : null,
+                              "description" : "List rules.",
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "parameters" : {
+                                 "properties" : {
+                                    "group" : {
+                                       "minLength" : 2,
+                                       "description" : "Security Group name.",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string",
+                                       "maxLength" : 20
+                                    }
+                                 },
+                                 "additionalProperties" : 0
+                              },
+                              "name" : "get_rules",
+                              "method" : "GET",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "pos" : {
+                                          "type" : "integer"
+                                       }
                                     },
-                                    "protected" : 1,
-                                    "parameters" : {
-                                       "properties" : {
-                                          "iface" : {
-                                             "maxLength" : 20,
-                                             "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.",
-                                             "optional" : 1,
-                                             "minLength" : 2,
-                                             "format" : "pve-iface",
-                                             "type" : "string"
-                                          },
-                                          "digest" : {
-                                             "type" : "string",
-                                             "optional" : 1,
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40
-                                          },
-                                          "source" : {
-                                             "optional" : 1,
-                                             "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",
-                                             "type" : "string"
-                                          },
-                                          "comment" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "action" : {
-                                             "type" : "string",
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "minLength" : 2,
-                                             "maxLength" : 20,
-                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                             "optional" : 1
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "minimum" : 0
-                                          },
-                                          "dest" : {
-                                             "format" : "pve-fw-addr-spec",
-                                             "type" : "string",
-                                             "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.",
-                                             "optional" : 1
-                                          },
-                                          "type" : {
-                                             "enum" : [
-                                                "in",
-                                                "out",
-                                                "group"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "proto" : {
-                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                             "optional" : 1,
-                                             "format" : "pve-fw-protocol-spec",
-                                             "type" : "string"
-                                          },
-                                          "enable" : {
-                                             "type" : "integer",
-                                             "minimum" : 0,
-                                             "optional" : 1
-                                          },
-                                          "moveto" : {
-                                             "optional" : 1,
-                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                             "minimum" : 0,
-                                             "type" : "integer"
-                                          },
-                                          "dport" : {
-                                             "format" : "pve-fw-dport-spec",
-                                             "type" : "string",
-                                             "optional" : 1,
-                                             "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."
-                                          },
-                                          "delete" : {
-                                             "description" : "A list of settings you want to delete.",
-                                             "optional" : 1,
-                                             "format" : "pve-configid-list",
-                                             "type" : "string"
-                                          },
-                                          "sport" : {
-                                             "format" : "pve-fw-sport-spec",
-                                             "type" : "string",
-                                             "optional" : 1,
-                                             "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."
-                                          },
-                                          "group" : {
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "maxLength" : 20,
-                                             "description" : "Security Group name.",
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "optional" : 1,
-                                             "maxLength" : 128,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "additionalProperties" : 0
-                                    },
-                                    "proxyto" : null,
-                                    "description" : "Modify rule data.",
-                                    "returns" : {
-                                       "type" : "null"
-                                    },
-                                    "name" : "update_rule",
-                                    "method" : "PUT"
-                                 },
-                                 "DELETE" : {
-                                    "protected" : 1,
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "proxyto" : null,
-                                    "parameters" : {
-                                       "properties" : {
-                                          "group" : {
-                                             "maxLength" : 20,
-                                             "description" : "Security Group name.",
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "minLength" : 2,
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "optional" : 1,
-                                             "minimum" : 0,
-                                             "type" : "integer"
-                                          },
-                                          "digest" : {
-                                             "type" : "string",
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1
-                                          }
-                                       },
-                                       "additionalProperties" : 0
-                                    },
-                                    "description" : "Delete rule.",
-                                    "method" : "DELETE",
-                                    "name" : "delete_rule",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "method" : "GET",
-                                    "name" : "get_rule",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "pos" : {
-                                             "minimum" : 0,
-                                             "type" : "integer",
-                                             "description" : "Update rule at position <pos>.",
-                                             "optional" : 1
-                                          },
-                                          "group" : {
-                                             "maxLength" : 20,
-                                             "description" : "Security Group name.",
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "proxyto" : null,
-                                    "returns" : {
-                                       "properties" : {
-                                          "pos" : {
-                                             "type" : "integer"
-                                          }
-                                       },
-                                       "type" : "object"
-                                    },
-                                    "description" : "Get single rule data.",
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    }
-                                 }
-                              },
-                              "path" : "/cluster/firewall/groups/{group}/{pos}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "description" : "List rules.",
-                              "method" : "GET",
-                              "name" : "get_rules",
-                              "returns" : {
-                                 "type" : "array",
-                                 "items" : {
-                                    "type" : "object",
-                                    "properties" : {
-                                       "pos" : {
-                                          "type" : "integer"
-                                       }
-                                    }
+                                    "type" : "object"
                                  },
                                  "links" : [
                                     {
                                        "href" : "{pos}",
                                        "rel" : "child"
                                     }
-                                 ]
-                              },
-                              "proxyto" : null,
-                              "parameters" : {
-                                 "properties" : {
-                                    "group" : {
-                                       "maxLength" : 20,
-                                       "description" : "Security Group name.",
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "minLength" : 2,
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "additionalProperties" : 0
+                                 ],
+                                 "type" : "array"
                               }
                            },
                            "DELETE" : {
-                              "method" : "DELETE",
                               "name" : "delete_security_group",
-                              "returns" : {
-                                 "type" : "null"
-                              },
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
                                     "group" : {
-                                       "description" : "Security Group name.",
                                        "maxLength" : 20,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                        "minLength" : 2,
+                                       "description" : "Security Group name.",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                        "type" : "string"
                                     }
                                  }
                               },
-                              "protected" : 1,
-                              "description" : "Delete security group.",
                               "permissions" : {
                                  "check" : [
                                     "perm",
@@ -329,47 +223,73 @@ var pveapi = [
                                        "Sys.Modify"
                                     ]
                                  ]
-                              }
+                              },
+                              "protected" : 1,
+                              "description" : "Delete security group.",
+                              "returns" : {
+                                 "type" : "null"
+                              },
+                              "method" : "DELETE"
                            },
                            "POST" : {
+                              "method" : "POST",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "group" : {
-                                       "type" : "string",
+                                    "iface" : {
                                        "maxLength" : 20,
-                                       "description" : "Security Group name.",
+                                       "format" : "pve-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.",
                                        "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+"
+                                       "optional" : 1,
+                                       "type" : "string"
                                     },
                                     "comment" : {
                                        "type" : "string",
                                        "optional" : 1
                                     },
-                                    "action" : {
+                                    "digest" : {
+                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                       "optional" : 1,
+                                       "type" : "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.",
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "optional" : 0,
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20
+                                       "format" : "pve-fw-addr-spec"
                                     },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
+                                    "sport" : {
+                                       "format" : "pve-fw-sport-spec",
+                                       "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.",
                                        "optional" : 1,
-                                       "type" : "integer",
-                                       "minimum" : 0
+                                       "type" : "string"
                                     },
                                     "dest" : {
-                                       "format" : "pve-fw-addr-spec",
-                                       "type" : "string",
                                        "optional" : 1,
-                                       "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."
+                                       "type" : "string",
+                                       "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"
                                     },
-                                    "macro" : {
+                                    "action" : {
+                                       "maxLength" : 20,
                                        "type" : "string",
-                                       "optional" : 1,
-                                       "maxLength" : 128
+                                       "optional" : 0,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "minLength" : 2
+                                    },
+                                    "enable" : {
+                                       "minimum" : 0,
+                                       "type" : "integer",
+                                       "optional" : 1
+                                    },
+                                    "dport" : {
+                                       "format" : "pve-fw-dport-spec",
+                                       "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.",
+                                       "type" : "string",
+                                       "optional" : 1
                                     },
                                     "type" : {
                                        "enum" : [
@@ -380,53 +300,37 @@ var pveapi = [
                                        "optional" : 0,
                                        "type" : "string"
                                     },
-                                    "proto" : {
+                                    "macro" : {
                                        "type" : "string",
-                                       "format" : "pve-fw-protocol-spec",
                                        "optional" : 1,
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'."
+                                       "maxLength" : 128
                                     },
-                                    "iface" : {
-                                       "minLength" : 2,
-                                       "maxLength" : 20,
-                                       "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.",
-                                       "optional" : 1,
+                                    "group" : {
                                        "type" : "string",
-                                       "format" : "pve-iface"
+                                       "description" : "Security Group name.",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "minLength" : 2,
+                                       "maxLength" : 20
                                     },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                    "proto" : {
                                        "optional" : 1,
-                                       "maxLength" : 40,
-                                       "type" : "string"
+                                       "type" : "string",
+                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                       "format" : "pve-fw-protocol-spec"
                                     },
-                                    "enable" : {
-                                       "optional" : 1,
+                                    "pos" : {
                                        "minimum" : 0,
-                                       "type" : "integer"
-                                    },
-                                    "dport" : {
-                                       "format" : "pve-fw-dport-spec",
-                                       "type" : "string",
-                                       "optional" : 1,
-                                       "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."
-                                    },
-                                    "source" : {
-                                       "type" : "string",
-                                       "format" : "pve-fw-addr-spec",
-                                       "optional" : 1,
-                                       "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."
-                                    },
-                                    "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.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "format" : "pve-fw-sport-spec"
+                                       "description" : "Update rule at position <pos>.",
+                                       "type" : "integer",
+                                       "optional" : 1
                                     }
                                  }
                               },
-                              "proxyto" : null,
+                              "name" : "create_rule",
                               "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              },
                               "permissions" : {
                                  "check" : [
                                     "perm",
@@ -436,362 +340,518 @@ var pveapi = [
                                     ]
                                  ]
                               },
-                              "returns" : {
-                                 "type" : "null"
-                              },
-                              "method" : "POST",
-                              "name" : "create_rule",
-                              "description" : "Create new rule."
+                              "description" : "Create new rule.",
+                              "proxyto" : null
                            }
                         },
-                        "path" : "/cluster/firewall/groups/{group}",
-                        "leaf" : 0,
+                        "children" : [
+                           {
+                              "text" : "{pos}",
+                              "info" : {
+                                 "PUT" : {
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "sport" : {
+                                             "format" : "pve-fw-sport-spec",
+                                             "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.",
+                                             "type" : "string",
+                                             "optional" : 1
+                                          },
+                                          "iface" : {
+                                             "minLength" : 2,
+                                             "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.",
+                                             "type" : "string",
+                                             "optional" : 1,
+                                             "maxLength" : 20,
+                                             "format" : "pve-iface"
+                                          },
+                                          "macro" : {
+                                             "maxLength" : 128,
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "proto" : {
+                                             "format" : "pve-fw-protocol-spec",
+                                             "type" : "string",
+                                             "optional" : 1,
+                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'."
+                                          },
+                                          "pos" : {
+                                             "description" : "Update rule at position <pos>.",
+                                             "type" : "integer",
+                                             "optional" : 1,
+                                             "minimum" : 0
+                                          },
+                                          "action" : {
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                             "maxLength" : 20
+                                          },
+                                          "enable" : {
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "minimum" : 0
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "maxLength" : 40
+                                          },
+                                          "source" : {
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "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"
+                                          },
+                                          "dest" : {
+                                             "format" : "pve-fw-addr-spec",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "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."
+                                          },
+                                          "delete" : {
+                                             "description" : "A list of settings you want to delete.",
+                                             "type" : "string",
+                                             "optional" : 1,
+                                             "format" : "pve-configid-list"
+                                          },
+                                          "comment" : {
+                                             "type" : "string",
+                                             "optional" : 1
+                                          },
+                                          "moveto" : {
+                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                             "type" : "integer",
+                                             "optional" : 1,
+                                             "minimum" : 0
+                                          },
+                                          "group" : {
+                                             "maxLength" : 20,
+                                             "type" : "string",
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "Security Group name.",
+                                             "minLength" : 2
+                                          },
+                                          "dport" : {
+                                             "type" : "string",
+                                             "optional" : 1,
+                                             "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"
+                                          },
+                                          "type" : {
+                                             "enum" : [
+                                                "in",
+                                                "out",
+                                                "group"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "name" : "update_rule",
+                                    "protected" : 1,
+                                    "method" : "PUT",
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "description" : "Modify rule data.",
+                                    "proxyto" : null,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "DELETE" : {
+                                    "returns" : {
+                                       "type" : "null"
+                                    },
+                                    "description" : "Delete rule.",
+                                    "proxyto" : null,
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "method" : "DELETE",
+                                    "protected" : 1,
+                                    "name" : "delete_rule",
+                                    "parameters" : {
+                                       "properties" : {
+                                          "pos" : {
+                                             "type" : "integer",
+                                             "optional" : 1,
+                                             "description" : "Update rule at position <pos>.",
+                                             "minimum" : 0
+                                          },
+                                          "group" : {
+                                             "maxLength" : 20,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "Security Group name.",
+                                             "minLength" : 2,
+                                             "type" : "string"
+                                          },
+                                          "digest" : {
+                                             "type" : "string",
+                                             "optional" : 1,
+                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 40
+                                          }
+                                       },
+                                       "additionalProperties" : 0
+                                    }
+                                 },
+                                 "GET" : {
+                                    "name" : "get_rule",
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "parameters" : {
+                                       "properties" : {
+                                          "pos" : {
+                                             "description" : "Update rule at position <pos>.",
+                                             "type" : "integer",
+                                             "optional" : 1,
+                                             "minimum" : 0
+                                          },
+                                          "group" : {
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "Security Group name.",
+                                             "minLength" : 2,
+                                             "type" : "string",
+                                             "maxLength" : 20
+                                          }
+                                       },
+                                       "additionalProperties" : 0
+                                    },
+                                    "proxyto" : null,
+                                    "description" : "Get single rule data.",
+                                    "returns" : {
+                                       "properties" : {
+                                          "pos" : {
+                                             "type" : "integer"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    },
+                                    "method" : "GET"
+                                 }
+                              },
+                              "path" : "/cluster/firewall/groups/{group}/{pos}",
+                              "leaf" : 1
+                           }
+                        ],
                         "text" : "{group}"
                      }
                   ],
-                  "info" : {
-                     "POST" : {
-                        "protected" : 1,
-                        "description" : "Create new security group.",
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "type" : "null"
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "rename" : {
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "minLength" : 2,
-                                 "maxLength" : 20,
-                                 "optional" : 1,
-                                 "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.",
-                                 "type" : "string"
-                              },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "optional" : 1,
-                                 "maxLength" : 40,
-                                 "type" : "string"
-                              },
-                              "group" : {
-                                 "type" : "string",
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "maxLength" : 20,
-                                 "description" : "Security Group name."
-                              },
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "name" : "create_security_group",
-                        "method" : "POST"
-                     },
-                     "GET" : {
-                        "returns" : {
-                           "items" : {
-                              "type" : "object",
-                              "properties" : {
-                                 "digest" : {
-                                    "type" : "string",
-                                    "maxLength" : 40,
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "optional" : 0
-                                 },
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "group" : {
-                                    "type" : "string",
-                                    "maxLength" : 20,
-                                    "description" : "Security Group name.",
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+"
-                                 }
-                              }
-                           },
-                           "type" : "array",
-                           "links" : [
-                              {
-                                 "rel" : "child",
-                                 "href" : "{group}"
-                              }
-                           ]
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "name" : "list_security_groups",
-                        "method" : "GET",
-                        "description" : "List security groups.",
-                        "permissions" : {
-                           "user" : "all"
-                        }
-                     }
-                  }
-               },
-               {
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/groups"
+               },
+               {
                   "info" : {
                      "GET" : {
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "description" : "List rules.",
                         "method" : "GET",
-                        "name" : "get_rules",
                         "returns" : {
+                           "type" : "array",
                            "links" : [
                               {
                                  "rel" : "child",
                                  "href" : "{pos}"
                               }
                            ],
-                           "type" : "array",
                            "items" : {
-                              "type" : "object",
                               "properties" : {
                                  "pos" : {
                                     "type" : "integer"
                                  }
-                              }
+                              },
+                              "type" : "object"
                            }
                         },
-                        "proxyto" : null,
+                        "name" : "get_rules",
                         "parameters" : {
                            "additionalProperties" : 0
-                        }
-                     },
-                     "POST" : {
-                        "protected" : 1,
+                        },
                         "permissions" : {
                            "check" : [
                               "perm",
                               "/",
                               [
-                                 "Sys.Modify"
+                                 "Sys.Audit"
                               ]
                            ]
                         },
-                        "proxyto" : null,
+                        "description" : "List rules.",
+                        "proxyto" : null
+                     },
+                     "POST" : {
+                        "method" : "POST",
+                        "protected" : 1,
+                        "name" : "create_rule",
                         "parameters" : {
-                           "additionalProperties" : 0,
                            "properties" : {
-                              "macro" : {
+                              "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.",
                                  "optional" : 1,
-                                 "maxLength" : 128,
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "format" : "pve-fw-dport-spec"
                               },
                               "type" : {
+                                 "type" : "string",
                                  "optional" : 0,
                                  "enum" : [
                                     "in",
                                     "out",
                                     "group"
-                                 ],
-                                 "type" : "string"
+                                 ]
                               },
-                              "pos" : {
+                              "enable" : {
                                  "type" : "integer",
-                                 "minimum" : 0,
-                                 "description" : "Update rule at position <pos>.",
-                                 "optional" : 1
-                              },
-                              "comment" : {
                                  "optional" : 1,
-                                 "type" : "string"
+                                 "minimum" : 0
                               },
                               "action" : {
                                  "type" : "string",
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                  "optional" : 0,
+                                 "minLength" : 2,
                                  "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                  "maxLength" : 20
                               },
-                              "dest" : {
+                              "macro" : {
                                  "optional" : 1,
-                                 "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",
-                                 "type" : "string"
-                              },
-                              "source" : {
-                                 "format" : "pve-fw-addr-spec",
                                  "type" : "string",
-                                 "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.",
-                                 "optional" : 1
+                                 "maxLength" : 128
                               },
-                              "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.",
+                              "pos" : {
+                                 "description" : "Update rule at position <pos>.",
+                                 "type" : "integer",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "format" : "pve-fw-sport-spec"
+                                 "minimum" : 0
                               },
-                              "digest" : {
+                              "proto" : {
+                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
                                  "type" : "string",
                                  "optional" : 1,
-                                 "maxLength" : 40,
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
+                                 "format" : "pve-fw-protocol-spec"
                               },
                               "iface" : {
-                                 "type" : "string",
-                                 "format" : "pve-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.",
                                  "minLength" : 2,
+                                 "type" : "string",
+                                 "optional" : 1,
                                  "maxLength" : 20,
-                                 "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"
+                              },
+                              "comment" : {
+                                 "type" : "string",
                                  "optional" : 1
                               },
-                              "proto" : {
+                              "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.",
                                  "optional" : 1,
-                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
                                  "type" : "string",
-                                 "format" : "pve-fw-protocol-spec"
+                                 "format" : "pve-fw-addr-spec"
                               },
-                              "dport" : {
-                                 "format" : "pve-fw-dport-spec",
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
                                  "type" : "string",
-                                 "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.",
-                                 "optional" : 1
+                                 "optional" : 1,
+                                 "maxLength" : 40
                               },
-                              "enable" : {
-                                 "type" : "integer",
-                                 "minimum" : 0,
-                                 "optional" : 1
+                              "dest" : {
+                                 "format" : "pve-fw-addr-spec",
+                                 "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.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "sport" : {
+                                 "format" : "pve-fw-sport-spec",
+                                 "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.",
+                                 "optional" : 1,
+                                 "type" : "string"
                               }
-                           }
+                           },
+                           "additionalProperties" : 0
                         },
-                        "description" : "Create new rule.",
                         "returns" : {
                            "type" : "null"
                         },
-                        "name" : "create_rule",
-                        "method" : "POST"
+                        "proxyto" : null,
+                        "description" : "Create new rule.",
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        }
                      }
                   },
-                  "path" : "/cluster/firewall/rules",
                   "children" : [
                      {
-                        "leaf" : 1,
                         "text" : "{pos}",
                         "info" : {
+                           "GET" : {
+                              "method" : "GET",
+                              "returns" : {
+                                 "properties" : {
+                                    "pos" : {
+                                       "type" : "integer"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "minimum" : 0
+                                    }
+                                 }
+                              },
+                              "name" : "get_rule",
+                              "description" : "Get single rule data.",
+                              "proxyto" : null
+                           },
                            "PUT" : {
+                              "protected" : 1,
+                              "name" : "update_rule",
                               "parameters" : {
                                  "properties" : {
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "string",
+                                       "format" : "pve-configid-list"
                                     },
                                     "iface" : {
-                                       "optional" : 1,
-                                       "maxLength" : 20,
-                                       "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.",
                                        "minLength" : 2,
-                                       "format" : "pve-iface",
-                                       "type" : "string"
-                                    },
-                                    "proto" : {
-                                       "optional" : 1,
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                       "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.",
                                        "type" : "string",
-                                       "format" : "pve-fw-protocol-spec"
-                                    },
-                                    "dport" : {
                                        "optional" : 1,
-                                       "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",
-                                       "type" : "string"
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20
                                     },
                                     "moveto" : {
-                                       "type" : "integer",
                                        "minimum" : 0,
                                        "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                       "type" : "integer",
                                        "optional" : 1
                                     },
-                                    "enable" : {
+                                    "comment" : {
                                        "optional" : 1,
-                                       "type" : "integer",
-                                       "minimum" : 0
+                                       "type" : "string"
                                     },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
+                                    "digest" : {
+                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "format" : "pve-configid-list"
+                                       "type" : "string"
                                     },
                                     "source" : {
-                                       "type" : "string",
                                        "format" : "pve-fw-addr-spec",
+                                       "type" : "string",
                                        "optional" : 1,
                                        "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."
                                     },
                                     "sport" : {
-                                       "format" : "pve-fw-sport-spec",
+                                       "optional" : 1,
                                        "type" : "string",
                                        "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.",
-                                       "optional" : 1
+                                       "format" : "pve-fw-sport-spec"
                                     },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
+                                    "dest" : {
+                                       "type" : "string",
                                        "optional" : 1,
-                                       "minimum" : 0,
-                                       "type" : "integer"
+                                       "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"
                                     },
-                                    "action" : {
-                                       "type" : "string",
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "minLength" : 2,
-                                       "maxLength" : 20,
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "optional" : 1
+                                    "enable" : {
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "minimum" : 0
                                     },
-                                    "comment" : {
+                                    "dport" : {
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "string",
+                                       "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"
                                     },
-                                    "dest" : {
-                                       "format" : "pve-fw-addr-spec",
+                                    "type" : {
+                                       "enum" : [
+                                          "in",
+                                          "out",
+                                          "group"
+                                       ],
                                        "type" : "string",
-                                       "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.",
                                        "optional" : 1
                                     },
-                                    "macro" : {
+                                    "action" : {
                                        "type" : "string",
                                        "optional" : 1,
-                                       "maxLength" : 128
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "minLength" : 2,
+                                       "maxLength" : 20
                                     },
-                                    "type" : {
+                                    "macro" : {
+                                       "optional" : 1,
                                        "type" : "string",
+                                       "maxLength" : 128
+                                    },
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
                                        "optional" : 1,
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ]
+                                       "type" : "integer",
+                                       "minimum" : 0
+                                    },
+                                    "proto" : {
+                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "format" : "pve-fw-protocol-spec"
                                     }
                                  },
                                  "additionalProperties" : 0
                               },
+                              "method" : "PUT",
                               "proxyto" : null,
-                              "protected" : 1,
+                              "description" : "Modify rule data.",
                               "permissions" : {
                                  "check" : [
                                     "perm",
@@ -803,64 +863,64 @@ var pveapi = [
                               },
                               "returns" : {
                                  "type" : "null"
-                              },
-                              "method" : "PUT",
-                              "name" : "update_rule",
-                              "description" : "Modify rule data."
+                              }
                            },
-                           "GET" : {
+                           "DELETE" : {
                               "permissions" : {
                                  "check" : [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit"
+                                       "Sys.Modify"
                                     ]
                                  ]
                               },
-                              "description" : "Get single rule data.",
-                              "parameters" : {
-                                 "properties" : {
-                                    "pos" : {
-                                       "type" : "integer",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "description" : "Update rule at position <pos>."
-                                    }
-                                 },
-                                 "additionalProperties" : 0
-                              },
                               "proxyto" : null,
+                              "description" : "Delete rule.",
                               "returns" : {
-                                 "properties" : {
-                                    "pos" : {
-                                       "type" : "integer"
-                                    }
-                                 },
-                                 "type" : "object"
+                                 "type" : "null"
                               },
-                              "method" : "GET",
-                              "name" : "get_rule"
-                           },
-                           "DELETE" : {
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
                                     "pos" : {
-                                       "description" : "Update rule at position <pos>.",
                                        "optional" : 1,
                                        "type" : "integer",
+                                       "description" : "Update rule at position <pos>.",
                                        "minimum" : 0
                                     },
                                     "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" : "string",
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
                                     }
                                  }
                               },
-                              "proxyto" : null,
+                              "name" : "delete_rule",
+                              "protected" : 1,
+                              "method" : "DELETE"
+                           }
+                        },
+                        "path" : "/cluster/firewall/rules/{pos}",
+                        "leaf" : 1
+                     }
+                  ],
+                  "text" : "rules",
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/rules"
+               },
+               {
+                  "path" : "/cluster/firewall/ipset",
+                  "leaf" : 0,
+                  "children" : [
+                     {
+                        "leaf" : 0,
+                        "path" : "/cluster/firewall/ipset/{name}",
+                        "info" : {
+                           "DELETE" : {
+                              "protected" : 1,
+                              "description" : "Delete IPSet",
                               "permissions" : {
                                  "check" : [
                                     "perm",
@@ -870,130 +930,136 @@ var pveapi = [
                                     ]
                                  ]
                               },
-                              "protected" : 1,
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "maxLength" : 64
+                                    }
+                                 }
+                              },
+                              "name" : "delete_ipset",
                               "returns" : {
                                  "type" : "null"
                               },
-                              "name" : "delete_rule",
-                              "method" : "DELETE",
-                              "description" : "Delete rule."
-                           }
-                        },
-                        "path" : "/cluster/firewall/rules/{pos}"
-                     }
-                  ],
-                  "leaf" : 0,
-                  "text" : "rules"
-               },
-               {
-                  "leaf" : 0,
-                  "text" : "ipset",
-                  "info" : {
-                     "POST" : {
-                        "parameters" : {
-                           "properties" : {
-                              "name" : {
-                                 "description" : "IP set name.",
-                                 "maxLength" : 64,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "minLength" : 2,
-                                 "type" : "string"
+                              "method" : "DELETE"
+                           },
+                           "GET" : {
+                              "returns" : {
+                                 "items" : {
+                                    "type" : "object",
+                                    "properties" : {
+                                       "comment" : {
+                                          "type" : "string",
+                                          "optional" : 1
+                                       },
+                                       "nomatch" : {
+                                          "type" : "boolean",
+                                          "optional" : 1
+                                       },
+                                       "cidr" : {
+                                          "type" : "string"
+                                       },
+                                       "digest" : {
+                                          "maxLength" : 40,
+                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                          "type" : "string",
+                                          "optional" : 0
+                                       }
+                                    }
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{cidr}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
                               },
-                              "rename" : {
-                                 "type" : "string",
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "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
+                              "method" : "GET",
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
                               },
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string"
+                              "name" : "get_ipset",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "maxLength" : 64
+                                    }
+                                 }
                               },
-                              "digest" : {
-                                 "optional" : 1,
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
-                                 "type" : "string"
-                              }
+                              "description" : "List IPSet content"
                            },
-                           "additionalProperties" : 0
-                        },
-                        "returns" : {
-                           "type" : "null"
-                        },
-                        "name" : "create_ipset",
-                        "method" : "POST",
-                        "description" : "Create new IPSet",
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1
-                     },
-                     "GET" : {
-                        "description" : "List IPSets",
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "optional" : 0,
-                                    "maxLength" : 40,
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "type" : "string",
-                                    "maxLength" : 64,
-                                    "description" : "IP set name.",
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+"
+                           "POST" : {
+                              "returns" : {
+                                 "type" : "null"
+                              },
+                              "method" : "POST",
+                              "name" : "create_ip",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "cidr" : {
+                                       "format" : "IPorCIDRorAlias",
+                                       "type" : "string",
+                                       "description" : "Network/IP specification in CIDR format."
+                                    },
+                                    "nomatch" : {
+                                       "type" : "boolean",
+                                       "optional" : 1
+                                    },
+                                    "name" : {
+                                       "type" : "string",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "description" : "IP set name.",
+                                       "minLength" : 2,
+                                       "maxLength" : 64
+                                    },
+                                    "comment" : {
+                                       "type" : "string",
+                                       "optional" : 1
+                                    }
                                  }
                               },
-                              "type" : "object"
-                           },
-                           "type" : "array",
-                           "links" : [
-                              {
-                                 "rel" : "child",
-                                 "href" : "{name}"
-                              }
-                           ]
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "description" : "Add IP or Network to IPSet.",
+                              "protected" : 1
+                           }
                         },
-                        "name" : "ipset_index",
-                        "method" : "GET"
-                     }
-                  },
-                  "children" : [
-                     {
-                        "leaf" : 0,
                         "text" : "{name}",
                         "children" : [
                            {
+                              "text" : "{cidr}",
                               "info" : {
                                  "GET" : {
+                                    "returns" : {
+                                       "type" : "object"
+                                    },
+                                    "method" : "GET",
+                                    "description" : "Read IP or Network settings from IPSet.",
                                     "protected" : 1,
                                     "permissions" : {
                                        "check" : [
@@ -1004,61 +1070,62 @@ var pveapi = [
                                           ]
                                        ]
                                     },
-                                    "description" : "Read IP or Network settings from IPSet.",
-                                    "method" : "GET",
-                                    "name" : "read_ip",
-                                    "returns" : {
-                                       "type" : "object"
-                                    },
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
                                           "cidr" : {
-                                             "format" : "IPorCIDRorAlias",
+                                             "description" : "Network/IP specification in CIDR format.",
                                              "type" : "string",
-                                             "description" : "Network/IP specification in CIDR format."
+                                             "format" : "IPorCIDRorAlias"
                                           },
                                           "name" : {
-                                             "type" : "string",
-                                             "description" : "IP set name.",
                                              "maxLength" : 64,
+                                             "type" : "string",
+                                             "minLength" : 2,
                                              "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "minLength" : 2
+                                             "description" : "IP set name."
                                           }
                                        }
-                                    }
+                                    },
+                                    "name" : "read_ip"
                                  },
-                                 "DELETE" : {
+                                 "PUT" : {
+                                    "method" : "PUT",
                                     "returns" : {
                                        "type" : "null"
                                     },
                                     "parameters" : {
+                                       "additionalProperties" : 0,
                                        "properties" : {
-                                          "cidr" : {
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "description" : "Network/IP specification in CIDR format."
-                                          },
-                                          "digest" : {
+                                          "nomatch" : {
                                              "optional" : 1,
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "type" : "string"
+                                             "type" : "boolean"
                                           },
                                           "name" : {
-                                             "description" : "IP set name.",
                                              "maxLength" : 64,
                                              "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "IP set name.",
                                              "minLength" : 2,
                                              "type" : "string"
+                                          },
+                                          "comment" : {
+                                             "type" : "string",
+                                             "optional" : 1
+                                          },
+                                          "cidr" : {
+                                             "format" : "IPorCIDRorAlias",
+                                             "description" : "Network/IP specification in CIDR format.",
+                                             "type" : "string"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "maxLength" : 40
                                           }
-                                       },
-                                       "additionalProperties" : 0
+                                       }
                                     },
-                                    "method" : "DELETE",
-                                    "name" : "remove_ip",
-                                    "protected" : 1,
-                                    "description" : "Remove IP or Network from IPSet.",
+                                    "name" : "update_ip",
                                     "permissions" : {
                                        "check" : [
                                           "perm",
@@ -1067,10 +1134,17 @@ var pveapi = [
                                              "Sys.Modify"
                                           ]
                                        ]
-                                    }
-                                 },
-                                 "PUT" : {
+                                    },
                                     "description" : "Update IP or Network settings",
+                                    "protected" : 1
+                                 },
+                                 "DELETE" : {
+                                    "method" : "DELETE",
+                                    "returns" : {
+                                       "type" : "null"
+                                    },
+                                    "description" : "Remove IP or Network from IPSet.",
+                                    "protected" : 1,
                                     "permissions" : {
                                        "check" : [
                                           "perm",
@@ -1080,140 +1154,251 @@ var pveapi = [
                                           ]
                                        ]
                                     },
-                                    "protected" : 1,
                                     "parameters" : {
                                        "properties" : {
-                                          "name" : {
-                                             "type" : "string",
-                                             "maxLength" : 64,
-                                             "description" : "IP set name.",
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "minLength" : 2
-                                          },
-                                          "cidr" : {
-                                             "type" : "string",
-                                             "format" : "IPorCIDRorAlias",
-                                             "description" : "Network/IP specification in CIDR format."
-                                          },
-                                          "nomatch" : {
-                                             "optional" : 1,
-                                             "type" : "boolean"
-                                          },
-                                          "comment" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
                                           "digest" : {
+                                             "maxLength" : 40,
                                              "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
                                              "optional" : 1,
-                                             "maxLength" : 40,
                                              "type" : "string"
+                                          },
+                                          "cidr" : {
+                                             "description" : "Network/IP specification in CIDR format.",
+                                             "type" : "string",
+                                             "format" : "IPorCIDRorAlias"
+                                          },
+                                          "name" : {
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "description" : "IP set name.",
+                                             "type" : "string",
+                                             "maxLength" : 64
                                           }
                                        },
                                        "additionalProperties" : 0
                                     },
-                                    "returns" : {
-                                       "type" : "null"
-                                    },
-                                    "method" : "PUT",
-                                    "name" : "update_ip"
+                                    "name" : "remove_ip"
                                  }
                               },
                               "path" : "/cluster/firewall/ipset/{name}/{cidr}",
-                              "leaf" : 1,
-                              "text" : "{cidr}"
+                              "leaf" : 1
                            }
-                        ],
-                        "path" : "/cluster/firewall/ipset/{name}",
-                        "info" : {
-                           "DELETE" : {
-                              "method" : "DELETE",
-                              "name" : "delete_ipset",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "minLength" : 2,
-                                       "type" : "string"
-                                    }
-                                 }
+                        ]
+                     }
+                  ],
+                  "text" : "ipset",
+                  "info" : {
+                     "POST" : {
+                        "returns" : {
+                           "type" : "null"
+                        },
+                        "method" : "POST",
+                        "protected" : 1,
+                        "description" : "Create new IPSet",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "type" : "string",
+                                 "optional" : 1
                               },
-                              "returns" : {
-                                 "type" : "null"
+                              "name" : {
+                                 "description" : "IP set name.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "minLength" : 2,
+                                 "type" : "string",
+                                 "maxLength" : 64
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
+                              "rename" : {
+                                 "type" : "string",
+                                 "optional" : 1,
+                                 "minLength" : 2,
+                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "maxLength" : 64
                               },
-                              "description" : "Delete IPSet",
-                              "protected" : 1
+                              "digest" : {
+                                 "maxLength" : 40,
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "type" : "string",
+                                 "optional" : 1
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "name" : "create_ipset"
+                     },
+                     "GET" : {
+                        "returns" : {
+                           "type" : "array",
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "type" : "string",
+                                    "optional" : 1
+                                 },
+                                 "name" : {
+                                    "maxLength" : 64,
+                                    "type" : "string",
+                                    "minLength" : 2,
+                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                    "description" : "IP set name."
+                                 },
+                                 "digest" : {
+                                    "maxLength" : 40,
+                                    "type" : "string",
+                                    "optional" : 0,
+                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
+                                 }
+                              },
+                              "type" : "object"
                            },
-                           "GET" : {
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ]
+                        },
+                        "method" : "GET",
+                        "description" : "List IPSets",
+                        "name" : "ipset_index",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        }
+                     }
+                  }
+               },
+               {
+                  "info" : {
+                     "POST" : {
+                        "method" : "POST",
+                        "returns" : {
+                           "type" : "null"
+                        },
+                        "protected" : 1,
+                        "description" : "Create IP or Network Alias.",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "cidr" : {
+                                 "description" : "Network/IP specification in CIDR format.",
+                                 "type" : "string",
+                                 "format" : "IPorCIDR"
                               },
-                              "description" : "List IPSet content",
-                              "method" : "GET",
-                              "name" : "get_ipset",
+                              "name" : {
+                                 "maxLength" : 64,
+                                 "type" : "string",
+                                 "minLength" : 2,
+                                 "description" : "Alias name.",
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+"
+                              },
+                              "comment" : {
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "name" : "create_alias"
+                     },
+                     "GET" : {
+                        "method" : "GET",
+                        "returns" : {
+                           "type" : "array",
+                           "links" : [
+                              {
+                                 "rel" : "child",
+                                 "href" : "{name}"
+                              }
+                           ],
+                           "items" : {
+                              "properties" : {
+                                 "digest" : {
+                                    "optional" : 0,
+                                    "type" : "string",
+                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                    "maxLength" : 40
+                                 },
+                                 "cidr" : {
+                                    "type" : "string"
+                                 },
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           }
+                        },
+                        "description" : "List aliases",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "name" : "get_aliases"
+                     }
+                  },
+                  "text" : "aliases",
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
                               "parameters" : {
-                                 "additionalProperties" : 0,
                                  "properties" : {
+                                    "digest" : {
+                                       "type" : "string",
+                                       "optional" : 1,
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 40
+                                    },
                                     "name" : {
                                        "maxLength" : 64,
-                                       "description" : "IP set name.",
-                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "description" : "Alias name.",
                                        "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "returns" : {
-                                 "links" : [
-                                    {
-                                       "rel" : "child",
-                                       "href" : "{cidr}"
+                                       "minLength" : 2
                                     }
-                                 ],
-                                 "items" : {
-                                    "properties" : {
-                                       "cidr" : {
-                                          "type" : "string"
-                                       },
-                                       "digest" : {
-                                          "type" : "string",
-                                          "maxLength" : 40,
-                                          "optional" : 0,
-                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
-                                       },
-                                       "comment" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "nomatch" : {
-                                          "type" : "boolean",
-                                          "optional" : 1
-                                       }
-                                    },
-                                    "type" : "object"
                                  },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
+                                 "additionalProperties" : 0
+                              },
+                              "name" : "remove_alias",
                               "permissions" : {
                                  "check" : [
                                     "perm",
@@ -1223,294 +1408,143 @@ var pveapi = [
                                     ]
                                  ]
                               },
-                              "description" : "Add IP or Network to IPSet.",
+                              "description" : "Remove IP or Network alias.",
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              },
+                              "method" : "DELETE"
+                           },
+                           "PUT" : {
+                              "method" : "PUT",
+                              "returns" : {
+                                 "type" : "null"
+                              },
+                              "description" : "Update IP or Network alias.",
                               "protected" : 1,
-                              "method" : "POST",
-                              "name" : "create_ip",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "name" : {
-                                       "type" : "string",
+                                    "rename" : {
+                                       "maxLength" : 64,
                                        "minLength" : 2,
+                                       "description" : "Rename an existing alias.",
                                        "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64
-                                    },
-                                    "comment" : {
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "nomatch" : {
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDRorAlias",
+                                    "name" : {
+                                       "maxLength" : 64,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "description" : "Alias name.",
+                                       "minLength" : 2,
                                        "type" : "string"
-                                    }
-                                 }
-                              },
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        }
-                     }
-                  ],
-                  "path" : "/cluster/firewall/ipset"
-               },
-               {
-                  "text" : "aliases",
-                  "leaf" : 0,
-                  "children" : [
-                     {
-                        "text" : "{name}",
-                        "leaf" : 1,
-                        "info" : {
-                           "DELETE" : {
-                              "protected" : 1,
-                              "description" : "Remove IP or Network alias.",
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "type" : "null"
-                              },
-                              "parameters" : {
-                                 "properties" : {
-                                    "name" : {
+                                    },
+                                    "comment" : {
                                        "type" : "string",
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64
+                                       "optional" : 1
+                                    },
+                                    "cidr" : {
+                                       "description" : "Network/IP specification in CIDR format.",
+                                       "type" : "string",
+                                       "format" : "IPorCIDR"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
                                        "maxLength" : 40,
+                                       "type" : "string",
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
                                     }
-                                 },
-                                 "additionalProperties" : 0
+                                 }
                               },
-                              "method" : "DELETE",
-                              "name" : "remove_alias"
-                           },
-                           "GET" : {
+                              "name" : "update_alias",
                               "permissions" : {
                                  "check" : [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit"
+                                       "Sys.Modify"
                                     ]
                                  ]
-                              },
-                              "description" : "Read alias.",
+                              }
+                           },
+                           "GET" : {
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
                                     "name" : {
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                        "maxLength" : 64,
+                                       "type" : "string",
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                        "description" : "Alias name.",
-                                       "type" : "string"
+                                       "minLength" : 2
                                     }
                                  }
                               },
-                              "returns" : {
-                                 "type" : "object"
-                              },
-                              "name" : "read_alias",
-                              "method" : "GET"
-                           },
-                           "PUT" : {
                               "permissions" : {
                                  "check" : [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify"
+                                       "Sys.Audit"
                                     ]
                                  ]
                               },
-                              "description" : "Update IP or Network alias.",
-                              "protected" : 1,
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "maxLength" : 64,
-                                       "description" : "Alias name.",
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "minLength" : 2,
-                                       "type" : "string"
-                                    },
-                                    "cidr" : {
-                                       "format" : "IPorCIDR",
-                                       "type" : "string",
-                                       "description" : "Network/IP specification in CIDR format."
-                                    },
-                                    "rename" : {
-                                       "type" : "string",
-                                       "optional" : 1,
-                                       "maxLength" : 64,
-                                       "description" : "Rename an existing alias.",
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "minLength" : 2
-                                    },
-                                    "comment" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "digest" : {
-                                       "maxLength" : 40,
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
+                              "name" : "read_alias",
+                              "description" : "Read alias.",
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "object"
                               },
-                              "name" : "update_alias",
-                              "method" : "PUT"
+                              "method" : "GET"
                            }
                         },
+                        "text" : "{name}",
+                        "leaf" : 1,
                         "path" : "/cluster/firewall/aliases/{name}"
                      }
                   ],
-                  "path" : "/cluster/firewall/aliases",
-                  "info" : {
-                     "GET" : {
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "description" : "List aliases",
-                        "method" : "GET",
-                        "name" : "get_aliases",
-                        "returns" : {
-                           "type" : "array",
-                           "items" : {
-                              "properties" : {
-                                 "name" : {
-                                    "type" : "string"
-                                 },
-                                 "cidr" : {
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "optional" : 0,
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "type" : "string"
-                                 },
-                                 "comment" : {
-                                    "type" : "string",
-                                    "optional" : 1
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "rel" : "child",
-                                 "href" : "{name}"
-                              }
-                           ]
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        }
-                     },
-                     "POST" : {
-                        "protected" : 1,
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "description" : "Create IP or Network Alias.",
-                        "name" : "create_alias",
-                        "method" : "POST",
-                        "returns" : {
-                           "type" : "null"
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "type" : "string",
-                                 "optional" : 1
-                              },
-                              "cidr" : {
-                                 "format" : "IPorCIDR",
-                                 "type" : "string",
-                                 "description" : "Network/IP specification in CIDR format."
-                              },
-                              "name" : {
-                                 "description" : "Alias name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
-                           }
-                        }
-                     }
-                  }
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/aliases"
                },
                {
                   "info" : {
-                     "GET" : {
-                        "method" : "GET",
-                        "name" : "get_options",
+                     "PUT" : {
+                        "description" : "Set Firewall options.",
+                        "protected" : 1,
                         "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "returns" : {
                            "properties" : {
-                              "policy_in" : {
+                              "policy_out" : {
+                                 "type" : "string",
+                                 "optional" : 1,
+                                 "description" : "Output policy.",
                                  "enum" : [
                                     "ACCEPT",
                                     "REJECT",
                                     "DROP"
-                                 ],
+                                 ]
+                              },
+                              "delete" : {
                                  "optional" : 1,
-                                 "description" : "Input policy.",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list"
                               },
                               "enable" : {
-                                 "description" : "Enable or disable the firewall cluster wide.",
+                                 "type" : "integer",
                                  "optional" : 1,
-                                 "minimum" : 0,
-                                 "type" : "integer"
+                                 "description" : "Enable or disable the firewall cluster wide.",
+                                 "minimum" : 0
                               },
-                              "policy_out" : {
+                              "digest" : {
+                                 "maxLength" : 40,
+                                 "optional" : 1,
                                  "type" : "string",
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."
+                              },
+                              "policy_in" : {
                                  "optional" : 1,
-                                 "description" : "Output policy.",
+                                 "type" : "string",
+                                 "description" : "Input policy.",
                                  "enum" : [
                                     "ACCEPT",
                                     "REJECT",
@@ -1518,125 +1552,129 @@ var pveapi = [
                                  ]
                               }
                            },
-                           "type" : "object"
+                           "additionalProperties" : 0
                         },
-                        "description" : "Get Firewall options.",
+                        "name" : "set_options",
                         "permissions" : {
                            "check" : [
                               "perm",
                               "/",
                               [
-                                 "Sys.Audit"
+                                 "Sys.Modify"
                               ]
                            ]
-                        }
-                     },
-                     "PUT" : {
-                        "description" : "Set Firewall options.",
+                        },
+                        "method" : "PUT",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
                         "permissions" : {
                            "check" : [
                               "perm",
                               "/",
                               [
-                                 "Sys.Modify"
+                                 "Sys.Audit"
                               ]
                            ]
                         },
-                        "protected" : 1,
-                        "name" : "set_options",
-                        "method" : "PUT",
                         "parameters" : {
-                           "additionalProperties" : 0,
+                           "additionalProperties" : 0
+                        },
+                        "name" : "get_options",
+                        "description" : "Get Firewall options.",
+                        "method" : "GET",
+                        "returns" : {
+                           "type" : "object",
                            "properties" : {
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "optional" : 1,
-                                 "format" : "pve-configid-list",
-                                 "type" : "string"
-                              },
                               "policy_in" : {
-                                 "description" : "Input policy.",
                                  "optional" : 1,
+                                 "type" : "string",
+                                 "description" : "Input policy.",
                                  "enum" : [
                                     "ACCEPT",
                                     "REJECT",
                                     "DROP"
-                                 ],
-                                 "type" : "string"
+                                 ]
                               },
-                              "digest" : {
-                                 "type" : "string",
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
-                                 "optional" : 1
+                              "enable" : {
+                                 "description" : "Enable or disable the firewall cluster wide.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "minimum" : 0
                               },
                               "policy_out" : {
+                                 "optional" : 1,
                                  "type" : "string",
+                                 "description" : "Output policy.",
                                  "enum" : [
                                     "ACCEPT",
                                     "REJECT",
                                     "DROP"
-                                 ],
-                                 "description" : "Output policy.",
-                                 "optional" : 1
-                              },
-                              "enable" : {
-                                 "minimum" : 0,
-                                 "type" : "integer",
-                                 "optional" : 1,
-                                 "description" : "Enable or disable the firewall cluster wide."
+                                 ]
                               }
                            }
-                        },
-                        "returns" : {
-                           "type" : "null"
                         }
                      }
                   },
-                  "path" : "/cluster/firewall/options",
+                  "text" : "options",
                   "leaf" : 1,
-                  "text" : "options"
+                  "path" : "/cluster/firewall/options"
                },
                {
-                  "leaf" : 1,
-                  "text" : "macros",
-                  "path" : "/cluster/firewall/macros",
                   "info" : {
                      "GET" : {
+                        "description" : "List available macros",
+                        "name" : "get_macros",
                         "permissions" : {
                            "user" : "all"
                         },
-                        "description" : "List available macros",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
                         "method" : "GET",
-                        "name" : "get_macros",
                         "returns" : {
+                           "type" : "array",
                            "items" : {
                               "properties" : {
                                  "descr" : {
-                                    "description" : "More verbose description (if available).",
-                                    "type" : "string"
+                                    "type" : "string",
+                                    "description" : "More verbose description (if available)."
                                  },
                                  "macro" : {
-                                    "type" : "string",
-                                    "description" : "Macro name."
+                                    "description" : "Macro name.",
+                                    "type" : "string"
                                  }
                               },
                               "type" : "object"
-                           },
-                           "type" : "array"
-                        },
-                        "parameters" : {
-                           "additionalProperties" : 0
+                           }
                         }
                      }
-                  }
+                  },
+                  "text" : "macros",
+                  "leaf" : 1,
+                  "path" : "/cluster/firewall/macros"
                },
                {
                   "leaf" : 1,
-                  "text" : "refs",
                   "path" : "/cluster/firewall/refs",
                   "info" : {
                      "GET" : {
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "type" : {
+                                 "description" : "Only list references of specified type.",
+                                 "enum" : [
+                                    "alias",
+                                    "ipset"
+                                 ],
+                                 "type" : "string",
+                                 "optional" : 1
+                              }
+                           }
+                        },
                         "permissions" : {
                            "check" : [
                               "perm",
@@ -1646,19 +1684,14 @@ var pveapi = [
                               ]
                            ]
                         },
-                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
-                        "method" : "GET",
                         "name" : "refs",
+                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
                         "returns" : {
                            "items" : {
-                              "type" : "object",
                               "properties" : {
                                  "name" : {
                                     "type" : "string"
                                  },
-                                 "ref" : {
-                                    "type" : "string"
-                                 },
                                  "type" : {
                                     "type" : "string",
                                     "enum" : [
@@ -1666,71 +1699,45 @@ var pveapi = [
                                        "ipset"
                                     ]
                                  },
-                                 "comment" : {
-                                    "optional" : 1,
+                                 "ref" : {
                                     "type" : "string"
+                                 },
+                                 "comment" : {
+                                    "type" : "string",
+                                    "optional" : 1
                                  }
-                              }
+                              },
+                              "type" : "object"
                            },
                            "type" : "array"
                         },
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "type" : {
-                                 "type" : "string",
-                                 "enum" : [
-                                    "alias",
-                                    "ipset"
-                                 ],
-                                 "optional" : 1,
-                                 "description" : "Only list references of specified type."
-                              }
-                           }
-                        }
+                        "method" : "GET"
                      }
-                  }
+                  },
+                  "text" : "refs"
                }
             ],
+            "leaf" : 0,
             "path" : "/cluster/firewall"
          },
          {
-            "leaf" : 0,
-            "text" : "backup",
             "children" : [
                {
-                  "text" : "{id}",
-                  "leaf" : 1,
                   "info" : {
-                     "GET" : {
+                     "DELETE" : {
+                        "protected" : 1,
+                        "description" : "Delete vzdump backup job definition.",
+                        "name" : "delete_job",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
                               "id" : {
+                                 "type" : "string",
                                  "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string"
+                                 "maxLength" : 50
                               }
                            }
                         },
-                        "returns" : {
-                           "type" : "object"
-                        },
-                        "name" : "read_job",
-                        "method" : "GET",
-                        "description" : "Read vzdump backup job definition.",
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        }
-                     },
-                     "DELETE" : {
-                        "description" : "Delete vzdump backup job definition.",
                         "permissions" : {
                            "check" : [
                               "perm",
@@ -1740,26 +1747,17 @@ var pveapi = [
                               ]
                            ]
                         },
-                        "protected" : 1,
                         "method" : "DELETE",
-                        "name" : "delete_job",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "id" : {
-                                 "type" : "string",
-                                 "maxLength" : 50,
-                                 "description" : "The job ID."
-                              }
-                           }
-                        },
                         "returns" : {
                            "type" : "null"
                         }
                      },
                      "PUT" : {
-                        "protected" : 1,
-                        "description" : "Update vzdump backup job definition.",
+                        "method" : "PUT",
+                        "returns" : {
+                           "type" : "null"
+                        },
+                        "name" : "update_job",
                         "permissions" : {
                            "check" : [
                               "perm",
@@ -1769,190 +1767,161 @@ var pveapi = [
                               ]
                            ]
                         },
-                        "name" : "update_job",
-                        "method" : "PUT",
-                        "returns" : {
-                           "type" : "null"
-                        },
                         "parameters" : {
                            "properties" : {
-                              "stopwait" : {
-                                 "type" : "integer",
-                                 "default" : 10,
-                                 "minimum" : 0,
-                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                                 "optional" : 1
-                              },
-                              "exclude-path" : {
+                              "size" : {
+                                 "minimum" : 500,
+                                 "description" : "Unused, will be removed in a future release.",
+                                 "default" : 1024,
                                  "optional" : 1,
-                                 "description" : "Exclude certain files/directories (shell globs).",
-                                 "format" : "string-alist",
-                                 "type" : "string"
+                                 "type" : "integer"
                               },
-                              "starttime" : {
+                              "node" : {
                                  "type" : "string",
-                                 "pattern" : "\\d{1,2}:\\d{1,2}",
-                                 "description" : "Job Start time.",
-                                 "typetext" : "HH:MM"
+                                 "optional" : 1,
+                                 "description" : "Only run if executed on this node.",
+                                 "format" : "pve-node"
                               },
-                              "all" : {
+                              "exclude" : {
                                  "optional" : 1,
-                                 "description" : "Backup all known guest systems on this host.",
-                                 "type" : "boolean",
-                                 "default" : 0
+                                 "type" : "string",
+                                 "description" : "Exclude specified guest systems (assumes --all)",
+                                 "format" : "pve-vmid-list"
                               },
-                              "remove" : {
+                              "delete" : {
+                                 "format" : "pve-configid-list",
                                  "optional" : 1,
-                                 "description" : "Remove old backup files if there are more than 'maxfiles' backup files.",
+                                 "type" : "string",
+                                 "description" : "A list of settings you want to delete."
+                              },
+                              "stdexcludes" : {
+                                 "description" : "Exclude temporary files and logs.",
                                  "default" : 1,
+                                 "optional" : 1,
                                  "type" : "boolean"
                               },
-                              "storage" : {
+                              "exclude-path" : {
+                                 "format" : "string-alist",
                                  "type" : "string",
-                                 "format" : "pve-storage-id",
-                                 "description" : "Store resulting file to this storage.",
-                                 "optional" : 1
+                                 "optional" : 1,
+                                 "description" : "Exclude certain files/directories (shell globs)."
                               },
                               "enabled" : {
-                                 "optional" : 1,
                                  "description" : "Enable or disable the job.",
                                  "type" : "boolean",
+                                 "optional" : 1,
                                  "default" : "1"
                               },
-                              "compress" : {
-                                 "description" : "Compress dump file.",
+                              "storage" : {
+                                 "format" : "pve-storage-id",
                                  "optional" : 1,
-                                 "enum" : [
-                                    "0",
-                                    "1",
-                                    "gzip",
-                                    "lzo"
-                                 ],
-                                 "default" : "0",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "description" : "Store resulting file to this storage."
                               },
-                              "size" : {
+                              "pigz" : {
+                                 "default" : 0,
                                  "optional" : 1,
-                                 "description" : "Unused, will be removed in a future release.",
-                                 "minimum" : 500,
                                  "type" : "integer",
-                                 "default" : 1024
+                                 "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count."
                               },
-                              "bwlimit" : {
-                                 "optional" : 1,
-                                 "description" : "Limit I/O bandwidth (KBytes per second).",
+                              "stopwait" : {
+                                 "minimum" : 0,
+                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
                                  "type" : "integer",
-                                 "default" : 0,
-                                 "minimum" : 0
+                                 "optional" : 1,
+                                 "default" : 10
                               },
-                              "tmpdir" : {
-                                 "type" : "string",
-                                 "description" : "Store temporary files to specified directory.",
-                                 "optional" : 1
-                              },
-                              "stop" : {
+                              "quiet" : {
+                                 "description" : "Be quiet.",
+                                 "default" : 0,
                                  "optional" : 1,
-                                 "description" : "Stop runnig backup jobs on this host.",
-                                 "type" : "boolean",
-                                 "default" : 0
-                              },
-                              "script" : {
-                                 "type" : "string",
-                                 "description" : "Use specified hook script.",
-                                 "optional" : 1
+                                 "type" : "boolean"
                               },
                               "mailnotification" : {
-                                 "type" : "string",
-                                 "default" : "always",
                                  "enum" : [
                                     "always",
                                     "failure"
                                  ],
                                  "description" : "Specify when to send an email",
-                                 "optional" : 1
-                              },
-                              "stdexcludes" : {
+                                 "type" : "string",
                                  "optional" : 1,
-                                 "description" : "Exclude temporary files and logs.",
-                                 "type" : "boolean",
-                                 "default" : 1
+                                 "default" : "always"
                               },
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
+                              "all" : {
+                                 "type" : "boolean",
                                  "optional" : 1,
-                                 "format" : "pve-configid-list",
-                                 "type" : "string"
+                                 "default" : 0,
+                                 "description" : "Backup all known guest systems on this host."
                               },
-                              "pigz" : {
+                              "id" : {
+                                 "description" : "The job ID.",
+                                 "type" : "string",
+                                 "maxLength" : 50
+                              },
+                              "remove" : {
+                                 "default" : 1,
                                  "optional" : 1,
-                                 "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
-                                 "type" : "integer",
-                                 "default" : 0
+                                 "type" : "boolean",
+                                 "description" : "Remove old backup files if there are more than 'maxfiles' backup files."
                               },
-                              "maxfiles" : {
+                              "script" : {
                                  "optional" : 1,
-                                 "description" : "Maximal number of backup files per guest system.",
-                                 "minimum" : 1,
-                                 "default" : 1,
-                                 "type" : "integer"
+                                 "type" : "string",
+                                 "description" : "Use specified hook script."
                               },
                               "lockwait" : {
-                                 "description" : "Maximal time to wait for the global lock (minutes).",
-                                 "optional" : 1,
                                  "minimum" : 0,
                                  "default" : 180,
-                                 "type" : "integer"
-                              },
-                              "vmid" : {
-                                 "description" : "The ID of the guest system you want to backup.",
                                  "optional" : 1,
+                                 "type" : "integer",
+                                 "description" : "Maximal time to wait for the global lock (minutes)."
+                              },
+                              "mailto" : {
                                  "type" : "string",
-                                 "format" : "pve-vmid-list"
+                                 "optional" : 1,
+                                 "description" : "Comma-separated list of email addresses that should receive email notifications.",
+                                 "format" : "string-list"
                               },
                               "dumpdir" : {
-                                 "type" : "string",
                                  "description" : "Store resulting files to specified directory.",
+                                 "type" : "string",
                                  "optional" : 1
                               },
-                              "node" : {
-                                 "format" : "pve-node",
+                              "starttime" : {
+                                 "pattern" : "\\d{1,2}:\\d{1,2}",
+                                 "description" : "Job Start time.",
                                  "type" : "string",
-                                 "optional" : 1,
-                                 "description" : "Only run if executed on this node."
+                                 "typetext" : "HH:MM"
                               },
-                              "dow" : {
-                                 "format" : "pve-day-of-week-list",
-                                 "type" : "string",
+                              "bwlimit" : {
+                                 "minimum" : 0,
+                                 "description" : "Limit I/O bandwidth (KBytes per second).",
+                                 "default" : 0,
                                  "optional" : 1,
-                                 "description" : "Day of week selection."
-                              },
-                              "id" : {
-                                 "type" : "string",
-                                 "maxLength" : 50,
-                                 "description" : "The job ID."
+                                 "type" : "integer"
                               },
                               "ionice" : {
                                  "minimum" : 0,
-                                 "maximum" : 8,
-                                 "default" : 7,
-                                 "type" : "integer",
+                                 "description" : "Set CFQ ionice priority.",
                                  "optional" : 1,
-                                 "description" : "Set CFQ ionice priority."
+                                 "type" : "integer",
+                                 "default" : 7,
+                                 "maximum" : 8
                               },
-                              "quiet" : {
+                              "stop" : {
+                                 "default" : 0,
                                  "optional" : 1,
-                                 "description" : "Be quiet.",
                                  "type" : "boolean",
-                                 "default" : 0
+                                 "description" : "Stop runnig backup jobs on this host."
                               },
-                              "mailto" : {
-                                 "description" : "Comma-separated list of email addresses that should receive email notifications.",
+                              "maxfiles" : {
+                                 "description" : "Maximal number of backup files per guest system.",
+                                 "default" : 1,
                                  "optional" : 1,
-                                 "format" : "string-list",
-                                 "type" : "string"
+                                 "type" : "integer",
+                                 "minimum" : 1
                               },
                               "mode" : {
-                                 "optional" : 1,
                                  "description" : "Backup mode.",
                                  "enum" : [
                                     "snapshot",
@@ -1960,252 +1929,303 @@ var pveapi = [
                                     "stop"
                                  ],
                                  "default" : "snapshot",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "optional" : 1
                               },
-                              "exclude" : {
-                                 "description" : "Exclude specified guest systems (assumes --all)",
+                              "compress" : {
+                                 "default" : "0",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "description" : "Compress dump file.",
+                                 "enum" : [
+                                    "0",
+                                    "1",
+                                    "gzip",
+                                    "lzo"
+                                 ]
+                              },
+                              "tmpdir" : {
                                  "optional" : 1,
+                                 "type" : "string",
+                                 "description" : "Store temporary files to specified directory."
+                              },
+                              "vmid" : {
                                  "format" : "pve-vmid-list",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "optional" : 1,
+                                 "description" : "The ID of the guest system you want to backup."
+                              },
+                              "dow" : {
+                                 "description" : "Day of week selection.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "format" : "pve-day-of-week-list"
                               }
                            },
                            "additionalProperties" : 0
-                        }
+                        },
+                        "protected" : 1,
+                        "description" : "Update vzdump backup job definition."
+                     },
+                     "GET" : {
+                        "method" : "GET",
+                        "returns" : {
+                           "type" : "object"
+                        },
+                        "parameters" : {
+                           "properties" : {
+                              "id" : {
+                                 "description" : "The job ID.",
+                                 "type" : "string",
+                                 "maxLength" : 50
+                              }
+                           },
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "name" : "read_job",
+                        "description" : "Read vzdump backup job definition."
                      }
                   },
+                  "text" : "{id}",
+                  "leaf" : 1,
                   "path" : "/cluster/backup/{id}"
                }
             ],
-            "path" : "/cluster/backup",
+            "text" : "backup",
             "info" : {
                "POST" : {
+                  "description" : "Create new vzdump backup job.",
+                  "protected" : 1,
+                  "name" : "create_job",
+                  "permissions" : {
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Modify"
+                        ]
+                     ]
+                  },
                   "parameters" : {
                      "properties" : {
-                        "starttime" : {
-                           "type" : "string",
-                           "pattern" : "\\d{1,2}:\\d{1,2}",
-                           "typetext" : "HH:MM",
-                           "description" : "Job Start time."
+                        "stopwait" : {
+                           "default" : 10,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                           "minimum" : 0
                         },
-                        "exclude-path" : {
-                           "type" : "string",
-                           "format" : "string-alist",
-                           "description" : "Exclude certain files/directories (shell globs).",
+                        "quiet" : {
+                           "description" : "Be quiet.",
+                           "default" : 0,
+                           "type" : "boolean",
                            "optional" : 1
                         },
                         "remove" : {
-                           "type" : "boolean",
                            "default" : 1,
+                           "type" : "boolean",
                            "optional" : 1,
                            "description" : "Remove old backup files if there are more than 'maxfiles' backup files."
                         },
+                        "mailnotification" : {
+                           "description" : "Specify when to send an email",
+                           "enum" : [
+                              "always",
+                              "failure"
+                           ],
+                           "default" : "always",
+                           "type" : "string",
+                           "optional" : 1
+                        },
                         "all" : {
-                           "default" : 0,
-                           "type" : "boolean",
+                           "description" : "Backup all known guest systems on this host.",
                            "optional" : 1,
-                           "description" : "Backup all known guest systems on this host."
+                           "type" : "boolean",
+                           "default" : 0
                         },
-                        "stopwait" : {
-                           "minimum" : 0,
-                           "type" : "integer",
-                           "default" : 10,
-                           "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                           "optional" : 1
+                        "exclude" : {
+                           "description" : "Exclude specified guest systems (assumes --all)",
+                           "type" : "string",
+                           "optional" : 1,
+                           "format" : "pve-vmid-list"
                         },
-                        "bwlimit" : {
-                           "default" : 0,
+                        "size" : {
+                           "description" : "Unused, will be removed in a future release.",
+                           "default" : 1024,
                            "type" : "integer",
-                           "minimum" : 0,
                            "optional" : 1,
-                           "description" : "Limit I/O bandwidth (KBytes per second)."
+                           "minimum" : 500
                         },
-                        "tmpdir" : {
+                        "node" : {
+                           "optional" : 1,
                            "type" : "string",
-                           "description" : "Store temporary files to specified directory.",
-                           "optional" : 1
+                           "description" : "Only run if executed on this node.",
+                           "format" : "pve-node"
                         },
-                        "stop" : {
+                        "pigz" : {
                            "default" : 0,
-                           "type" : "boolean",
+                           "type" : "integer",
                            "optional" : 1,
-                           "description" : "Stop runnig backup jobs on this host."
+                           "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count."
                         },
-                        "script" : {
-                           "type" : "string",
-                           "description" : "Use specified hook script.",
+                        "stdexcludes" : {
+                           "description" : "Exclude temporary files and logs.",
+                           "default" : 1,
+                           "type" : "boolean",
                            "optional" : 1
                         },
-                        "compress" : {
+                        "exclude-path" : {
                            "type" : "string",
-                           "default" : "0",
-                           "enum" : [
-                              "0",
-                              "1",
-                              "gzip",
-                              "lzo"
-                           ],
-                           "description" : "Compress dump file.",
-                           "optional" : 1
+                           "optional" : 1,
+                           "description" : "Exclude certain files/directories (shell globs).",
+                           "format" : "string-alist"
                         },
                         "storage" : {
                            "optional" : 1,
+                           "type" : "string",
                            "description" : "Store resulting file to this storage.",
-                           "format" : "pve-storage-id",
-                           "type" : "string"
+                           "format" : "pve-storage-id"
                         },
                         "enabled" : {
                            "description" : "Enable or disable the job.",
+                           "default" : "1",
                            "optional" : 1,
-                           "type" : "boolean",
-                           "default" : "1"
-                        },
-                        "size" : {
-                           "default" : 1024,
-                           "type" : "integer",
-                           "minimum" : 500,
-                           "description" : "Unused, will be removed in a future release.",
-                           "optional" : 1
+                           "type" : "boolean"
                         },
-                        "pigz" : {
+                        "maxfiles" : {
+                           "minimum" : 1,
+                           "default" : 1,
                            "optional" : 1,
-                           "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
                            "type" : "integer",
-                           "default" : 0
+                           "description" : "Maximal number of backup files per guest system."
                         },
-                        "lockwait" : {
+                        "stop" : {
+                           "type" : "boolean",
                            "optional" : 1,
-                           "description" : "Maximal time to wait for the global lock (minutes).",
-                           "default" : 180,
-                           "type" : "integer",
-                           "minimum" : 0
+                           "default" : 0,
+                           "description" : "Stop runnig backup jobs on this host."
                         },
-                        "maxfiles" : {
+                        "tmpdir" : {
                            "optional" : 1,
-                           "description" : "Maximal number of backup files per guest system.",
-                           "minimum" : 1,
-                           "type" : "integer",
-                           "default" : 1
+                           "type" : "string",
+                           "description" : "Store temporary files to specified directory."
                         },
-                        "stdexcludes" : {
-                           "type" : "boolean",
-                           "default" : 1,
-                           "description" : "Exclude temporary files and logs.",
-                           "optional" : 1
+                        "compress" : {
+                           "optional" : 1,
+                           "type" : "string",
+                           "default" : "0",
+                           "enum" : [
+                              "0",
+                              "1",
+                              "gzip",
+                              "lzo"
+                           ],
+                           "description" : "Compress dump file."
                         },
-                        "mailnotification" : {
+                        "mode" : {
                            "type" : "string",
-                           "default" : "always",
-                           "description" : "Specify when to send an email",
                            "optional" : 1,
+                           "default" : "snapshot",
                            "enum" : [
-                              "always",
-                              "failure"
-                           ]
+                              "snapshot",
+                              "suspend",
+                              "stop"
+                           ],
+                           "description" : "Backup mode."
                         },
-                        "node" : {
-                           "description" : "Only run if executed on this node.",
+                        "bwlimit" : {
+                           "description" : "Limit I/O bandwidth (KBytes per second).",
+                           "default" : 0,
                            "optional" : 1,
-                           "type" : "string",
-                           "format" : "pve-node"
+                           "type" : "integer",
+                           "minimum" : 0
                         },
                         "ionice" : {
-                           "description" : "Set CFQ ionice priority.",
-                           "optional" : 1,
                            "minimum" : 0,
-                           "type" : "integer",
                            "default" : 7,
-                           "maximum" : 8
-                        },
-                        "quiet" : {
-                           "description" : "Be quiet.",
+                           "maximum" : 8,
+                           "type" : "integer",
                            "optional" : 1,
-                           "type" : "boolean",
-                           "default" : 0
+                           "description" : "Set CFQ ionice priority."
                         },
                         "dow" : {
-                           "description" : "Day of week selection.",
-                           "optional" : 1,
                            "format" : "pve-day-of-week-list",
                            "default" : "mon,tue,wed,thu,fri,sat,sun",
-                           "type" : "string"
+                           "optional" : 1,
+                           "type" : "string",
+                           "description" : "Day of week selection."
                         },
-                        "dumpdir" : {
+                        "vmid" : {
+                           "description" : "The ID of the guest system you want to backup.",
                            "type" : "string",
-                           "description" : "Store resulting files to specified directory.",
-                           "optional" : 1
+                           "optional" : 1,
+                           "format" : "pve-vmid-list"
                         },
-                        "exclude" : {
+                        "lockwait" : {
+                           "minimum" : 0,
+                           "description" : "Maximal time to wait for the global lock (minutes).",
+                           "type" : "integer",
                            "optional" : 1,
-                           "description" : "Exclude specified guest systems (assumes --all)",
+                           "default" : 180
+                        },
+                        "script" : {
                            "type" : "string",
-                           "format" : "pve-vmid-list"
+                           "optional" : 1,
+                           "description" : "Use specified hook script."
                         },
                         "mailto" : {
-                           "type" : "string",
-                           "format" : "string-list",
                            "description" : "Comma-separated list of email addresses that should receive email notifications.",
-                           "optional" : 1
-                        },
-                        "mode" : {
                            "optional" : 1,
-                           "description" : "Backup mode.",
-                           "enum" : [
-                              "snapshot",
-                              "suspend",
-                              "stop"
-                           ],
-                           "default" : "snapshot",
-                           "type" : "string"
+                           "type" : "string",
+                           "format" : "string-list"
                         },
-                        "vmid" : {
-                           "optional" : 1,
-                           "description" : "The ID of the guest system you want to backup.",
-                           "format" : "pve-vmid-list",
+                        "dumpdir" : {
+                           "description" : "Store resulting files to specified directory.",
+                           "type" : "string",
+                           "optional" : 1
+                        },
+                        "starttime" : {
+                           "typetext" : "HH:MM",
+                           "description" : "Job Start time.",
+                           "pattern" : "\\d{1,2}:\\d{1,2}",
                            "type" : "string"
                         }
                      },
                      "additionalProperties" : 0
                   },
+                  "method" : "POST",
                   "returns" : {
                      "type" : "null"
-                  },
-                  "name" : "create_job",
-                  "method" : "POST",
-                  "description" : "Create new vzdump backup job.",
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Modify"
-                        ]
-                     ]
-                  },
-                  "protected" : 1
+                  }
                },
                "GET" : {
+                  "method" : "GET",
                   "returns" : {
-                     "type" : "array",
+                     "links" : [
+                        {
+                           "rel" : "child",
+                           "href" : "{id}"
+                        }
+                     ],
                      "items" : {
+                        "type" : "object",
                         "properties" : {
                            "id" : {
                               "type" : "string"
                            }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
                         }
-                     ]
-                  },
-                  "parameters" : {
-                     "additionalProperties" : 0
+                     },
+                     "type" : "array"
                   },
-                  "name" : "index",
-                  "method" : "GET",
                   "description" : "List vzdump backup schedule.",
                   "permissions" : {
                      "check" : [
@@ -2215,146 +2235,100 @@ var pveapi = [
                            "Sys.Audit"
                         ]
                      ]
-                  }
-               }
-            }
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "description" : "Directory index.",
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "links" : [
-                        {
-                           "rel" : "child",
-                           "href" : "{id}"
-                        }
-                     ],
-                     "type" : "array",
-                     "items" : {
-                        "type" : "object",
-                        "properties" : {
-                           "id" : {
-                              "type" : "string"
-                           }
-                        }
-                     }
                   },
+                  "name" : "index",
                   "parameters" : {
                      "additionalProperties" : 0
-                  },
-                  "method" : "GET",
-                  "name" : "index"
+                  }
                }
             },
+            "path" : "/cluster/backup",
+            "leaf" : 0
+         },
+         {
             "path" : "/cluster/ha",
+            "leaf" : 0,
+            "text" : "ha",
             "children" : [
                {
-                  "path" : "/cluster/ha/resources",
                   "info" : {
                      "POST" : {
-                        "name" : "create",
                         "method" : "POST",
                         "returns" : {
                            "type" : "null"
                         },
+                        "name" : "create",
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Console"
+                              ]
+                           ]
+                        },
                         "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).",
-                                 "typetext" : "<type>:<name>",
+                              "max_restart" : {
+                                 "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                 "default" : 1,
+                                 "type" : "integer",
+                                 "optional" : 1,
+                                 "minimum" : 0
+                              },
+                              "state" : {
                                  "type" : "string",
-                                 "format" : "pve-ha-resource-or-vm-id"
+                                 "optional" : 1,
+                                 "default" : "enabled",
+                                 "enum" : [
+                                    "enabled",
+                                    "disabled"
+                                 ],
+                                 "description" : "Resource state."
+                              },
+                              "max_relocate" : {
+                                 "default" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                 "minimum" : 0
                               },
                               "group" : {
                                  "type" : "string",
-                                 "format" : "pve-configid",
+                                 "optional" : 1,
                                  "description" : "The HA group identifier.",
-                                 "optional" : 1
+                                 "format" : "pve-configid"
                               },
                               "comment" : {
                                  "optional" : 1,
-                                 "maxLength" : 4096,
+                                 "type" : "string",
                                  "description" : "Description.",
-                                 "type" : "string"
-                              },
-                              "max_relocate" : {
-                                 "optional" : 1,
-                                 "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                 "minimum" : 0,
-                                 "type" : "integer",
-                                 "default" : 1
+                                 "maxLength" : 4096
                               },
                               "type" : {
-                                 "optional" : 1,
-                                 "description" : "Resource type.",
                                  "enum" : [
                                     "vm",
                                     "ct"
                                  ],
-                                 "type" : "string"
-                              },
-                              "state" : {
-                                 "default" : "enabled",
+                                 "description" : "Resource type.",
                                  "type" : "string",
-                                 "optional" : 1,
-                                 "description" : "Resource state.",
-                                 "enum" : [
-                                    "enabled",
-                                    "disabled"
-                                 ]
-                              },
-                              "max_restart" : {
-                                 "minimum" : 0,
-                                 "type" : "integer",
-                                 "default" : 1,
-                                 "description" : "Maximal number of tries to restart the service on a node after its start failed.",
                                  "optional" : 1
+                              },
+                              "sid" : {
+                                 "format" : "pve-ha-resource-or-vm-id",
+                                 "typetext" : "<type>:<name>",
+                                 "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).",
+                                 "type" : "string"
                               }
                            },
+                           "additionalProperties" : 0,
                            "type" : "object"
                         },
                         "protected" : 1,
-                        "description" : "Create a new HA resource.",
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Console"
-                              ]
-                           ]
-                        }
+                        "description" : "Create a new HA resource."
                      },
                      "GET" : {
-                        "name" : "index",
-                        "method" : "GET",
-                        "parameters" : {
-                           "properties" : {
-                              "type" : {
-                                 "type" : "string",
-                                 "enum" : [
-                                    "vm",
-                                    "ct"
-                                 ],
-                                 "optional" : 1,
-                                 "description" : "Only list resources of specific type"
-                              }
-                           },
-                           "additionalProperties" : 0
-                        },
                         "returns" : {
-                           "type" : "array",
                            "items" : {
                               "properties" : {
                                  "sid" : {
@@ -2365,11 +2339,15 @@ var pveapi = [
                            },
                            "links" : [
                               {
-                                 "rel" : "child",
-                                 "href" : "{sid}"
+                                 "href" : "{sid}",
+                                 "rel" : "child"
                               }
-                           ]
+                           ],
+                           "type" : "array"
                         },
+                        "method" : "GET",
+                        "description" : "List HA resources.",
+                        "name" : "index",
                         "permissions" : {
                            "check" : [
                               "perm",
@@ -2379,19 +2357,50 @@ var pveapi = [
                  &n