]> git.proxmox.com Git - pve-docs.git/blobdiff - api-viewer/apidata.js
totp: fix copy/paste mistake
[pve-docs.git] / api-viewer / apidata.js
index 6562c52baa45b109df57569d79675008763e836f..aff69c63cb6b6c005e02293935564632def050b2 100644 (file)
@@ -97,8 +97,8 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -180,7 +180,7 @@ const apiSchema = [
                      "additionalProperties" : 0
                   },
                   "permissions" : {
-                     "description" : "Requires the VM.Audit permission on /vms/<vmid>.",
+                     "description" : "Will only return replication jobs for which the calling user has VM.Audit permission on /vms/<vmid>.",
                      "user" : "all"
                   },
                   "returns" : {
@@ -525,8 +525,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -741,691 +741,502 @@ const apiSchema = [
          },
          {
             "children" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Return the version of the cluster join API available on this node.",
-                        "method" : "GET",
-                        "name" : "join_api_version",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "description" : "Cluster Join API version, currently 1",
-                           "minimum" : 0,
-                           "type" : "integer"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/apiversion",
-                  "text" : "apiversion"
-               },
                {
                   "children" : [
                      {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Removes a node from the cluster configuration.",
-                              "method" : "DELETE",
-                              "name" : "delnode",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Remove sendmail endpoint",
+                                    "method" : "DELETE",
+                                    "name" : "delete_sendmail_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "name" : {
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/mapping/notifications",
+                                          [
+                                             "Mapping.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
                                     }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Adds a node to the cluster configuration. This call is for internal use.",
-                              "method" : "POST",
-                              "name" : "addnode",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "apiversion" : {
-                                       "description" : "The JOIN_API_VERSION of the new node.",
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer>"
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Return a specific sendmail endpoint",
+                                    "method" : "GET",
+                                    "name" : "get_sendmail_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "name" : {
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
                                     },
-                                    "force" : {
-                                       "description" : "Do not throw error if node already exists.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "or",
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Modify"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Audit"
+                                             ]
+                                          ]
+                                       ]
                                     },
-                                    "link[n]" : {
-                                       "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
-                                       "format" : {
-                                          "address" : {
-                                             "default_key" : 1,
-                                             "description" : "Hostname (or IP) of this corosync link address.",
-                                             "format" : "address",
-                                             "format_description" : "IP",
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "properties" : {
+                                          "author" : {
+                                             "description" : "Author of the mail",
+                                             "optional" : 1,
                                              "type" : "string"
                                           },
-                                          "priority" : {
+                                          "comment" : {
+                                             "description" : "Comment",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "disable" : {
                                              "default" : 0,
-                                             "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
-                                             "maximum" : 255,
-                                             "minimum" : 0,
+                                             "description" : "Disable this target",
                                              "optional" : 1,
-                                             "type" : "integer"
+                                             "type" : "boolean"
+                                          },
+                                          "from-address" : {
+                                             "description" : "`From` address for the mail",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "mailto" : {
+                                             "description" : "List of email recipients",
+                                             "items" : {
+                                                "format" : "email-or-username",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array"
+                                          },
+                                          "mailto-user" : {
+                                             "description" : "List of users",
+                                             "items" : {
+                                                "format" : "pve-userid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
+                                             "type" : "string"
                                           }
                                        },
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "[address=]<IP> [,priority=<integer>]"
-                                    },
-                                    "new_node_ip" : {
-                                       "description" : "IP Address of node to add. Used as fallback if no links are given.",
-                                       "format" : "ip",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nodeid" : {
-                                       "description" : "Node id for this node.",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
-                                    },
-                                    "votes" : {
-                                       "description" : "Number of votes for this node",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
+                                       "type" : "object"
                                     }
-                                 }
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "properties" : {
-                                    "corosync_authkey" : {
-                                       "type" : "string"
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Update existing sendmail endpoint",
+                                    "method" : "PUT",
+                                    "name" : "update_sendmail_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "author" : {
+                                             "description" : "Author of the mail",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "comment" : {
+                                             "description" : "Comment",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "delete" : {
+                                             "description" : "A list of settings you want to delete.",
+                                             "items" : {
+                                                "format" : "pve-configid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "disable" : {
+                                             "default" : 0,
+                                             "description" : "Disable this target",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "from-address" : {
+                                             "description" : "`From` address for the mail",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "mailto" : {
+                                             "description" : "List of email recipients",
+                                             "items" : {
+                                                "format" : "email-or-username",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "mailto-user" : {
+                                             "description" : "List of users",
+                                             "items" : {
+                                                "format" : "pve-userid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
                                     },
-                                    "corosync_conf" : {
-                                       "type" : "string"
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/mapping/notifications",
+                                          [
+                                             "Mapping.Modify"
+                                          ]
+                                       ]
                                     },
-                                    "warnings" : {
-                                       "items" : {
-                                          "type" : "string"
-                                       },
-                                       "type" : "array"
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
                                     }
-                                 },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/config/nodes/{node}",
-                        "text" : "{node}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Corosync node list.",
-                        "method" : "GET",
-                        "name" : "nodes",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "node" : {
-                                    "type" : "string"
                                  }
                               },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{node}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/config/nodes",
-                  "text" : "nodes"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get information needed to join this cluster over the connected node.",
-                        "method" : "GET",
-                        "name" : "join_info",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "default" : "current connected node",
-                                 "description" : "The node for which the joinee gets the nodeinfo. ",
-                                 "format" : "pve-node",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
+                              "leaf" : 1,
+                              "path" : "/cluster/notifications/endpoints/sendmail/{name}",
+                              "text" : "{name}"
                            }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "config_digest" : {
-                                 "type" : "string"
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Returns a list of all sendmail endpoints",
+                              "method" : "GET",
+                              "name" : "get_sendmail_endpoints",
+                              "parameters" : {
+                                 "additionalProperties" : 0
                               },
-                              "nodelist" : {
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Audit"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
                                  "items" : {
-                                    "additionalProperties" : 1,
                                     "properties" : {
-                                       "name" : {
-                                          "description" : "The cluster node name.",
-                                          "format" : "pve-node",
+                                       "author" : {
+                                          "description" : "Author of the mail",
+                                          "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "nodeid" : {
-                                          "description" : "Node id for this node.",
-                                          "minimum" : 1,
+                                       "comment" : {
+                                          "description" : "Comment",
                                           "optional" : 1,
-                                          "type" : "integer"
-                                       },
-                                       "pve_addr" : {
-                                          "format" : "ip",
                                           "type" : "string"
                                        },
-                                       "pve_fp" : {
-                                          "description" : "Certificate SHA 256 fingerprint.",
-                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                       "disable" : {
+                                          "default" : 0,
+                                          "description" : "Disable this target",
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "from-address" : {
+                                          "description" : "`From` address for the mail",
+                                          "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "quorum_votes" : {
-                                          "minimum" : 0,
-                                          "type" : "integer"
+                                       "mailto" : {
+                                          "description" : "List of email recipients",
+                                          "items" : {
+                                             "format" : "email-or-username",
+                                             "type" : "string"
+                                          },
+                                          "optional" : 1,
+                                          "type" : "array"
                                        },
-                                       "ring0_addr" : {
-                                          "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
-                                          "format" : {
-                                             "address" : {
-                                                "default_key" : 1,
-                                                "description" : "Hostname (or IP) of this corosync link address.",
-                                                "format" : "address",
-                                                "format_description" : "IP",
-                                                "type" : "string"
-                                             },
-                                             "priority" : {
-                                                "default" : 0,
-                                                "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
-                                                "maximum" : 255,
-                                                "minimum" : 0,
-                                                "optional" : 1,
-                                                "type" : "integer"
-                                             }
+                                       "mailto-user" : {
+                                          "description" : "List of users",
+                                          "items" : {
+                                             "format" : "pve-userid",
+                                             "type" : "string"
                                           },
                                           "optional" : 1,
+                                          "type" : "array"
+                                       },
+                                       "name" : {
+                                          "description" : "The name of the endpoint.",
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
+                                       "origin" : {
+                                          "description" : "Show if this entry was created by a user or was built-in",
+                                          "enum" : [
+                                             "user-created",
+                                             "builtin",
+                                             "modified-builtin"
+                                          ],
                                           "type" : "string"
                                        }
                                     },
                                     "type" : "object"
                                  },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
                                  "type" : "array"
-                              },
-                              "preferred_node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string"
-                              },
-                              "totem" : {
-                                 "type" : "object"
                               }
                            },
-                           "type" : "object"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Joins this node into an existing cluster. If no links are given, default to IP resolved by node's hostname on single link (fallback fails for clusters with multiple links).",
-                        "method" : "POST",
-                        "name" : "join",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "fingerprint" : {
-                                 "description" : "Certificate SHA 256 fingerprint.",
-                                 "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
-                                 "type" : "string"
-                              },
-                              "force" : {
-                                 "description" : "Do not throw error if node already exists.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "hostname" : {
-                                 "description" : "Hostname (or IP) of an existing cluster member.",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "link[n]" : {
-                                 "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
-                                 "format" : {
-                                    "address" : {
-                                       "default_key" : 1,
-                                       "description" : "Hostname (or IP) of this corosync link address.",
-                                       "format" : "address",
-                                       "format_description" : "IP",
-                                       "type" : "string"
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create a new sendmail endpoint",
+                              "method" : "POST",
+                              "name" : "create_sendmail_endpoint",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "author" : {
+                                       "description" : "Author of the mail",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "priority" : {
-                                       "default" : 0,
-                                       "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
-                                       "maximum" : 255,
-                                       "minimum" : 0,
+                                    "comment" : {
+                                       "description" : "Comment",
                                        "optional" : 1,
-                                       "type" : "integer"
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "disable" : {
+                                       "default" : 0,
+                                       "description" : "Disable this target",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "from-address" : {
+                                       "description" : "`From` address for the mail",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "mailto" : {
+                                       "description" : "List of email recipients",
+                                       "items" : {
+                                          "format" : "email-or-username",
+                                          "type" : "string"
+                                       },
+                                       "optional" : 1,
+                                       "type" : "array",
+                                       "typetext" : "<array>"
+                                    },
+                                    "mailto-user" : {
+                                       "description" : "List of users",
+                                       "items" : {
+                                          "format" : "pve-userid",
+                                          "type" : "string"
+                                       },
+                                       "optional" : 1,
+                                       "type" : "array",
+                                       "typetext" : "<array>"
+                                    },
+                                    "name" : {
+                                       "description" : "The name of the endpoint.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[address=]<IP> [,priority=<integer>]"
-                              },
-                              "nodeid" : {
-                                 "description" : "Node id for this node.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
+                                 }
                               },
-                              "password" : {
-                                 "description" : "Superuser (root) password of peer node.",
-                                 "maxLength" : 128,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/mapping/notifications",
+                                    [
+                                       "Mapping.Modify"
+                                    ]
+                                 ]
                               },
-                              "votes" : {
-                                 "description" : "Number of votes for this node",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
                               }
                            }
                         },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/join",
-                  "text" : "join"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get corosync totem protocol settings.",
-                        "method" : "GET",
-                        "name" : "totem",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/totem",
-                  "text" : "totem"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Get QDevice status",
-                        "method" : "GET",
-                        "name" : "status",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "object"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/config/qdevice",
-                  "text" : "qdevice"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
+                        "leaf" : 0,
+                        "path" : "/cluster/notifications/endpoints/sendmail",
+                        "text" : "sendmail"
                      },
-                     "links" : [
-                        {
-                           "href" : "{name}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Generate new cluster configuration. If no links given, default to local IP address as link0.",
-                  "method" : "POST",
-                  "name" : "create",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "clustername" : {
-                           "description" : "The name of the cluster.",
-                           "format" : "pve-node",
-                           "maxLength" : 15,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "link[n]" : {
-                           "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
-                           "format" : {
-                              "address" : {
-                                 "default_key" : 1,
-                                 "description" : "Hostname (or IP) of this corosync link address.",
-                                 "format" : "address",
-                                 "format_description" : "IP",
-                                 "type" : "string"
-                              },
-                              "priority" : {
-                                 "default" : 0,
-                                 "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
-                                 "maximum" : 255,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              }
-                           },
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[address=]<IP> [,priority=<integer>]"
-                        },
-                        "nodeid" : {
-                           "description" : "Node id for this node.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        },
-                        "votes" : {
-                           "description" : "Number of votes for this node.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        }
-                     }
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "string"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/config",
-            "text" : "config"
-         },
-         {
-            "children" : [
-               {
-                  "children" : [
                      {
                         "children" : [
                            {
                               "info" : {
                                  "DELETE" : {
                                     "allowtoken" : 1,
-                                    "description" : "Delete rule.",
+                                    "description" : "Remove gotify endpoint",
                                     "method" : "DELETE",
-                                    "name" : "delete_rule",
+                                    "name" : "delete_gotify_endpoint",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
+                                          "name" : {
+                                             "format" : "pve-configid",
                                              "type" : "string",
                                              "typetext" : "<string>"
-                                          },
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
                                           }
                                        }
                                     },
                                     "permissions" : {
                                        "check" : [
                                           "perm",
-                                          "/",
+                                          "/mapping/notifications",
                                           [
-                                             "Sys.Modify"
+                                             "Mapping.Modify"
                                           ]
                                        ]
                                     },
                                     "protected" : 1,
-                                    "proxyto" : null,
                                     "returns" : {
                                        "type" : "null"
                                     }
                                  },
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "Get single rule data.",
+                                    "description" : "Return a specific gotify endpoint",
                                     "method" : "GET",
-                                    "name" : "get_rule",
+                                    "name" : "get_gotify_endpoint",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
+                                          "name" : {
+                                             "description" : "Name of the endpoint.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           }
                                        }
                                     },
                                     "permissions" : {
                                        "check" : [
-                                          "perm",
-                                          "/",
+                                          "or",
                                           [
-                                             "Sys.Audit"
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Modify"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Audit"
+                                             ]
                                           ]
                                        ]
                                     },
-                                    "proxyto" : null,
+                                    "protected" : 1,
                                     "returns" : {
                                        "properties" : {
-                                          "action" : {
-                                             "type" : "string"
-                                          },
                                           "comment" : {
+                                             "description" : "Comment",
                                              "optional" : 1,
                                              "type" : "string"
                                           },
-                                          "dest" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "dport" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "enable" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "icmp-type" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "iface" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ipversion" : {
-                                             "optional" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "pos" : {
-                                             "type" : "integer"
-                                          },
-                                          "proto" : {
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
                                              "optional" : 1,
                                              "type" : "string"
                                           },
-                                          "source" : {
+                                          "disable" : {
+                                             "default" : 0,
+                                             "description" : "Disable this target",
                                              "optional" : 1,
-                                             "type" : "string"
+                                             "type" : "boolean"
                                           },
-                                          "sport" : {
-                                             "optional" : 1,
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
                                              "type" : "string"
                                           },
-                                          "type" : {
+                                          "server" : {
+                                             "description" : "Server URL",
                                              "type" : "string"
                                           }
                                        },
@@ -1434,248 +1245,602 @@ const apiSchema = [
                                  },
                                  "PUT" : {
                                     "allowtoken" : 1,
-                                    "description" : "Modify rule data.",
+                                    "description" : "Update existing gotify endpoint",
                                     "method" : "PUT",
-                                    "name" : "update_rule",
+                                    "name" : "update_gotify_endpoint",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "action" : {
-                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
                                           "comment" : {
-                                             "description" : "Descriptive comment.",
+                                             "description" : "Comment",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
                                           "delete" : {
                                              "description" : "A list of settings you want to delete.",
-                                             "format" : "pve-configid-list",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "dest" : {
-                                             "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                             "format" : "pve-fw-addr-spec",
-                                             "maxLength" : 512,
+                                             "items" : {
+                                                "format" : "pve-configid",
+                                                "type" : "string"
+                                             },
                                              "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                             "type" : "array",
+                                             "typetext" : "<array>"
                                           },
                                           "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "dport" : {
-                                             "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-dport-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "enable" : {
-                                             "description" : "Flag to enable/disable a rule.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "group" : {
-                                             "description" : "Security Group name.",
-                                             "maxLength" : 18,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "icmp-type" : {
-                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
-                                             "format" : "pve-fw-icmp-type-spec",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "iface" : {
-                                             "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
-                                             "format" : "pve-iface",
-                                             "maxLength" : 20,
-                                             "minLength" : 2,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "log" : {
-                                             "description" : "Log level for firewall rule.",
-                                             "enum" : [
-                                                "emerg",
-                                                "alert",
-                                                "crit",
-                                                "err",
-                                                "warning",
-                                                "notice",
-                                                "info",
-                                                "debug",
-                                                "nolog"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "macro" : {
-                                             "description" : "Use predefined standard macro.",
-                                             "maxLength" : 128,
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
-                                          "moveto" : {
-                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "pos" : {
-                                             "description" : "Update rule at position <pos>.",
-                                             "minimum" : 0,
+                                          "disable" : {
+                                             "default" : 0,
+                                             "description" : "Disable this target",
                                              "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
                                           },
-                                          "proto" : {
-                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                             "format" : "pve-fw-protocol-spec",
-                                             "optional" : 1,
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
-                                          "source" : {
-                                             "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                             "format" : "pve-fw-addr-spec",
-                                             "maxLength" : 512,
+                                          "server" : {
+                                             "description" : "Server URL",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
-                                          "sport" : {
-                                             "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                             "format" : "pve-fw-sport-spec",
+                                          "token" : {
+                                             "description" : "Secret token",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
-                                          },
-                                          "type" : {
-                                             "description" : "Rule type.",
-                                             "enum" : [
-                                                "in",
-                                                "out",
-                                                "group"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
                                           }
                                        }
                                     },
                                     "permissions" : {
                                        "check" : [
                                           "perm",
-                                          "/",
+                                          "/mapping/notifications",
                                           [
-                                             "Sys.Modify"
+                                             "Mapping.Modify"
                                           ]
                                        ]
                                     },
                                     "protected" : 1,
-                                    "proxyto" : null,
                                     "returns" : {
                                        "type" : "null"
                                     }
                                  }
                               },
                               "leaf" : 1,
-                              "path" : "/cluster/firewall/groups/{group}/{pos}",
-                              "text" : "{pos}"
+                              "path" : "/cluster/notifications/endpoints/gotify/{name}",
+                              "text" : "{name}"
                            }
                         ],
                         "info" : {
-                           "DELETE" : {
+                           "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Delete security group.",
-                              "method" : "DELETE",
-                              "name" : "delete_security_group",
+                              "description" : "Returns a list of all gotify endpoints",
+                              "method" : "GET",
+                              "name" : "get_gotify_endpoints",
                               "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
+                                 "additionalProperties" : 0
                               },
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/",
+                                    "/mapping/notifications",
                                     [
-                                       "Sys.Modify"
+                                       "Mapping.Audit"
                                     ]
                                  ]
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List rules.",
-                              "method" : "GET",
-                              "name" : "get_rules",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
+                                 "items" : {
+                                    "properties" : {
+                                       "comment" : {
+                                          "description" : "Comment",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "disable" : {
+                                          "default" : 0,
+                                          "description" : "Disable this target",
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "name" : {
+                                          "description" : "The name of the endpoint.",
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
+                                       "origin" : {
+                                          "description" : "Show if this entry was created by a user or was built-in",
+                                          "enum" : [
+                                             "user-created",
+                                             "builtin",
+                                             "modified-builtin"
+                                          ],
+                                          "type" : "string"
+                                       },
+                                       "server" : {
+                                          "description" : "Server URL",
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create a new gotify endpoint",
+                              "method" : "POST",
+                              "name" : "create_gotify_endpoint",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "comment" : {
+                                       "description" : "Comment",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "disable" : {
+                                       "default" : 0,
+                                       "description" : "Disable this target",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "name" : {
+                                       "description" : "The name of the endpoint.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "server" : {
+                                       "description" : "Server URL",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "token" : {
+                                       "description" : "Secret token",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/",
+                                    "/mapping/notifications",
                                     [
-                                       "Sys.Audit"
+                                       "Mapping.Modify"
                                     ]
                                  ]
                               },
-                              "proxyto" : null,
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/cluster/notifications/endpoints/gotify",
+                        "text" : "gotify"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Remove smtp endpoint",
+                                    "method" : "DELETE",
+                                    "name" : "delete_smtp_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "name" : {
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/mapping/notifications",
+                                          [
+                                             "Mapping.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Return a specific smtp endpoint",
+                                    "method" : "GET",
+                                    "name" : "get_smtp_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "name" : {
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "or",
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Modify"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Audit"
+                                             ]
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "properties" : {
+                                          "author" : {
+                                             "description" : "Author of the mail. Defaults to 'Proxmox VE'.",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "comment" : {
+                                             "description" : "Comment",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "disable" : {
+                                             "default" : 0,
+                                             "description" : "Disable this target",
+                                             "optional" : 1,
+                                             "type" : "boolean"
+                                          },
+                                          "from-address" : {
+                                             "description" : "`From` address for the mail",
+                                             "type" : "string"
+                                          },
+                                          "mailto" : {
+                                             "description" : "List of email recipients",
+                                             "items" : {
+                                                "format" : "email-or-username",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array"
+                                          },
+                                          "mailto-user" : {
+                                             "description" : "List of users",
+                                             "items" : {
+                                                "format" : "pve-userid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array"
+                                          },
+                                          "mode" : {
+                                             "default" : "tls",
+                                             "description" : "Determine which encryption method shall be used for the connection.",
+                                             "enum" : [
+                                                "insecure",
+                                                "starttls",
+                                                "tls"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
+                                             "type" : "string"
+                                          },
+                                          "port" : {
+                                             "description" : "The port to be used. Defaults to 465 for TLS based connections, 587 for STARTTLS based connections and port 25 for insecure plain-text connections.",
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "server" : {
+                                             "description" : "The address of the SMTP server.",
+                                             "type" : "string"
+                                          },
+                                          "username" : {
+                                             "description" : "Username for SMTP authentication",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Update existing smtp endpoint",
+                                    "method" : "PUT",
+                                    "name" : "update_smtp_endpoint",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "author" : {
+                                             "description" : "Author of the mail. Defaults to 'Proxmox VE'.",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "comment" : {
+                                             "description" : "Comment",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "delete" : {
+                                             "description" : "A list of settings you want to delete.",
+                                             "items" : {
+                                                "format" : "pve-configid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "disable" : {
+                                             "default" : 0,
+                                             "description" : "Disable this target",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "from-address" : {
+                                             "description" : "`From` address for the mail",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "mailto" : {
+                                             "description" : "List of email recipients",
+                                             "items" : {
+                                                "format" : "email-or-username",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "mailto-user" : {
+                                             "description" : "List of users",
+                                             "items" : {
+                                                "format" : "pve-userid",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
+                                          "mode" : {
+                                             "default" : "tls",
+                                             "description" : "Determine which encryption method shall be used for the connection.",
+                                             "enum" : [
+                                                "insecure",
+                                                "starttls",
+                                                "tls"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the endpoint.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "password" : {
+                                             "description" : "Password for SMTP authentication",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "port" : {
+                                             "description" : "The port to be used. Defaults to 465 for TLS based connections, 587 for STARTTLS based connections and port 25 for insecure plain-text connections.",
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer>"
+                                          },
+                                          "server" : {
+                                             "description" : "The address of the SMTP server.",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "username" : {
+                                             "description" : "Username for SMTP authentication",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "or",
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Modify"
+                                             ]
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/notifications/endpoints/smtp/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Returns a list of all smtp endpoints",
+                              "method" : "GET",
+                              "name" : "get_smtp_endpoints",
+                              "parameters" : {
+                                 "additionalProperties" : 0
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Audit"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
                               "returns" : {
                                  "items" : {
                                     "properties" : {
-                                       "pos" : {
+                                       "author" : {
+                                          "description" : "Author of the mail. Defaults to 'Proxmox VE'.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "comment" : {
+                                          "description" : "Comment",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "disable" : {
+                                          "default" : 0,
+                                          "description" : "Disable this target",
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "from-address" : {
+                                          "description" : "`From` address for the mail",
+                                          "type" : "string"
+                                       },
+                                       "mailto" : {
+                                          "description" : "List of email recipients",
+                                          "items" : {
+                                             "format" : "email-or-username",
+                                             "type" : "string"
+                                          },
+                                          "optional" : 1,
+                                          "type" : "array"
+                                       },
+                                       "mailto-user" : {
+                                          "description" : "List of users",
+                                          "items" : {
+                                             "format" : "pve-userid",
+                                             "type" : "string"
+                                          },
+                                          "optional" : 1,
+                                          "type" : "array"
+                                       },
+                                       "mode" : {
+                                          "default" : "tls",
+                                          "description" : "Determine which encryption method shall be used for the connection.",
+                                          "enum" : [
+                                             "insecure",
+                                             "starttls",
+                                             "tls"
+                                          ],
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "name" : {
+                                          "description" : "The name of the endpoint.",
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
+                                       "origin" : {
+                                          "description" : "Show if this entry was created by a user or was built-in",
+                                          "enum" : [
+                                             "user-created",
+                                             "builtin",
+                                             "modified-builtin"
+                                          ],
+                                          "type" : "string"
+                                       },
+                                       "port" : {
+                                          "description" : "The port to be used. Defaults to 465 for TLS based connections, 587 for STARTTLS based connections and port 25 for insecure plain-text connections.",
+                                          "optional" : 1,
                                           "type" : "integer"
+                                       },
+                                       "server" : {
+                                          "description" : "The address of the SMTP server.",
+                                          "type" : "string"
+                                       },
+                                       "username" : {
+                                          "description" : "Username for SMTP authentication",
+                                          "optional" : 1,
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
                                  },
                                  "links" : [
                                     {
-                                       "href" : "{pos}",
+                                       "href" : "{name}",
                                        "rel" : "child"
                                     }
                                  ],
@@ -1684,169 +1849,127 @@ const apiSchema = [
                            },
                            "POST" : {
                               "allowtoken" : 1,
-                              "description" : "Create new rule.",
+                              "description" : "Create a new smtp endpoint",
                               "method" : "POST",
-                              "name" : "create_rule",
+                              "name" : "create_smtp_endpoint",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "action" : {
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 0,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "comment" : {
-                                       "description" : "Descriptive comment.",
+                                    "author" : {
+                                       "description" : "Author of the mail. Defaults to 'Proxmox VE'.",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "dest" : {
-                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                       "format" : "pve-fw-addr-spec",
-                                       "maxLength" : 512,
+                                    "comment" : {
+                                       "description" : "Comment",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                    "disable" : {
+                                       "default" : 0,
+                                       "description" : "Disable this target",
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "dport" : {
-                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-dport-spec",
-                                       "optional" : 1,
+                                    "from-address" : {
+                                       "description" : "`From` address for the mail",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "enable" : {
-                                       "description" : "Flag to enable/disable a rule.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "group" : {
-                                       "description" : "Security Group name.",
-                                       "maxLength" : 18,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
-                                       "format" : "pve-fw-icmp-type-spec",
+                                    "mailto" : {
+                                       "description" : "List of email recipients",
+                                       "items" : {
+                                          "format" : "email-or-username",
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "iface" : {
-                                       "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
+                                    "mailto-user" : {
+                                       "description" : "List of users",
+                                       "items" : {
+                                          "format" : "pve-userid",
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule.",
+                                    "mode" : {
+                                       "default" : "tls",
+                                       "description" : "Determine which encryption method shall be used for the connection.",
                                        "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
+                                          "insecure",
+                                          "starttls",
+                                          "tls"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "macro" : {
-                                       "description" : "Use predefined standard macro.",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
+                                    "name" : {
+                                       "description" : "The name of the endpoint.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "proto" : {
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                       "format" : "pve-fw-protocol-spec",
+                                    "password" : {
+                                       "description" : "Password for SMTP authentication",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "source" : {
-                                       "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                       "format" : "pve-fw-addr-spec",
-                                       "maxLength" : 512,
+                                    "port" : {
+                                       "description" : "The port to be used. Defaults to 465 for TLS based connections, 587 for STARTTLS based connections and port 25 for insecure plain-text connections.",
                                        "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer>"
+                                    },
+                                    "server" : {
+                                       "description" : "The address of the SMTP server.",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "sport" : {
-                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-sport-spec",
+                                    "username" : {
+                                       "description" : "Username for SMTP authentication",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "type" : {
-                                       "description" : "Rule type.",
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ],
-                                       "optional" : 0,
-                                       "type" : "string"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
-                                    "perm",
-                                    "/",
+                                    "or",
                                     [
-                                       "Sys.Modify"
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
                                     ]
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : null,
                               "returns" : {
                                  "type" : "null"
                               }
                            }
                         },
                         "leaf" : 0,
-                        "path" : "/cluster/firewall/groups/{group}",
-                        "text" : "{group}"
+                        "path" : "/cluster/notifications/endpoints/smtp",
+                        "text" : "smtp"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "List security groups.",
+                        "description" : "Index for all available endpoint types.",
                         "method" : "GET",
-                        "name" : "list_security_groups",
+                        "name" : "endpoints_index",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
@@ -1855,91 +1978,176 @@ const apiSchema = [
                         },
                         "returns" : {
                            "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "group" : {
-                                    "description" : "Security Group name.",
-                                    "maxLength" : 18,
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                    "type" : "string"
-                                 }
-                              },
+                              "properties" : {},
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{group}",
+                                 "href" : "{name}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create new security group.",
-                        "method" : "POST",
-                        "name" : "create_security_group",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "group" : {
-                                 "description" : "Security Group name.",
-                                 "maxLength" : 18,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/notifications/endpoints",
+                  "text" : "endpoints"
+               },
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Send a test notification to a provided target.",
+                                    "method" : "POST",
+                                    "name" : "test_target",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "name" : {
+                                             "description" : "Name of the target.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "or",
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Modify"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Audit"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/mapping/notifications",
+                                             [
+                                                "Mapping.Use"
+                                             ]
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
                               },
-                              "rename" : {
-                                 "description" : "Rename/update an existing security group. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing group.",
-                                 "maxLength" : 18,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
+                              "leaf" : 1,
+                              "path" : "/cluster/notifications/targets/{name}/test",
+                              "text" : "test"
                            }
+                        ],
+                        "leaf" : 0,
+                        "path" : "/cluster/notifications/targets/{name}",
+                        "text" : "{name}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Returns a list of all entities that can be used as notification targets.",
+                        "method" : "GET",
+                        "name" : "get_all_targets",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
                         "permissions" : {
                            "check" : [
-                              "perm",
-                              "/",
+                              "or",
                               [
-                                 "Sys.Modify"
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Modify"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Audit"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Use"
+                                 ]
                               ]
                            ]
                         },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "description" : "Comment",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "disable" : {
+                                    "default" : 0,
+                                    "description" : "Show if this target is disabled",
+                                    "optional" : 1,
+                                    "type" : "boolean"
+                                 },
+                                 "name" : {
+                                    "description" : "Name of the target.",
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 },
+                                 "origin" : {
+                                    "description" : "Show if this entry was created by a user or was built-in",
+                                    "enum" : [
+                                       "user-created",
+                                       "builtin",
+                                       "modified-builtin"
+                                    ],
+                                    "type" : "string"
+                                 },
+                                 "type" : {
+                                    "description" : "Type of the target.",
+                                    "enum" : [
+                                       "sendmail",
+                                       "gotify",
+                                       "smtp"
+                                    ],
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
                         }
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/firewall/groups",
-                  "text" : "groups"
+                  "path" : "/cluster/notifications/targets",
+                  "text" : "targets"
                },
                {
                   "children" : [
@@ -1947,140 +2155,139 @@ const apiSchema = [
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Delete rule.",
+                              "description" : "Remove matcher",
                               "method" : "DELETE",
-                              "name" : "delete_rule",
+                              "name" : "delete_matcher",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
-                                       "optional" : 1,
+                                    "name" : {
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/",
+                                    "/mapping/notifications",
                                     [
-                                       "Sys.Modify"
+                                       "Mapping.Modify"
                                     ]
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : null,
                               "returns" : {
                                  "type" : "null"
                               }
                            },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get single rule data.",
+                              "description" : "Return a specific matcher",
                               "method" : "GET",
-                              "name" : "get_rule",
+                              "name" : "get_matcher",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
+                                    "name" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
-                                    "perm",
-                                    "/",
+                                    "or",
                                     [
-                                       "Sys.Audit"
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/notifications",
+                                       [
+                                          "Mapping.Audit"
+                                       ]
                                     ]
                                  ]
                               },
-                              "proxyto" : null,
+                              "protected" : 1,
                               "returns" : {
                                  "properties" : {
-                                    "action" : {
-                                       "type" : "string"
-                                    },
                                     "comment" : {
+                                       "description" : "Comment",
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "dest" : {
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "dport" : {
+                                    "disable" : {
+                                       "default" : 0,
+                                       "description" : "Disable this matcher",
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "boolean"
                                     },
-                                    "enable" : {
+                                    "invert-match" : {
+                                       "description" : "Invert match of the whole matcher",
                                        "optional" : 1,
-                                       "type" : "integer"
+                                       "type" : "boolean"
                                     },
-                                    "icmp-type" : {
+                                    "match-calendar" : {
+                                       "description" : "Match notification timestamp",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "array"
                                     },
-                                    "iface" : {
+                                    "match-field" : {
+                                       "description" : "Metadata fields to match (regex or exact match). Must be in the form (regex|exact):<field>=<value>",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "array"
                                     },
-                                    "ipversion" : {
+                                    "match-severity" : {
+                                       "description" : "Notification severities to match",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "integer"
+                                       "type" : "array"
                                     },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule",
+                                    "mode" : {
+                                       "default" : "all",
+                                       "description" : "Choose between 'all' and 'any' for when multiple properties are specified",
                                        "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
+                                          "all",
+                                          "any"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "macro" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "pos" : {
-                                       "type" : "integer"
-                                    },
-                                    "proto" : {
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "source" : {
-                                       "optional" : 1,
+                                    "name" : {
+                                       "description" : "Name of the matcher.",
+                                       "format" : "pve-configid",
                                        "type" : "string"
                                     },
-                                    "sport" : {
+                                    "target" : {
+                                       "description" : "Targets to notify on match",
+                                       "items" : {
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "type" : "string"
+                                       "type" : "array"
                                     }
                                  },
                                  "type" : "object"
@@ -2088,201 +2295,241 @@ const apiSchema = [
                            },
                            "PUT" : {
                               "allowtoken" : 1,
-                              "description" : "Modify rule data.",
+                              "description" : "Update existing matcher",
                               "method" : "PUT",
-                              "name" : "update_rule",
+                              "name" : "update_matcher",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "action" : {
-                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
                                     "comment" : {
-                                       "description" : "Descriptive comment.",
+                                       "description" : "Comment",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
                                     "delete" : {
                                        "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
+                                       "items" : {
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "dest" : {
-                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                       "format" : "pve-fw-addr-spec",
-                                       "maxLength" : 512,
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                    "disable" : {
+                                       "default" : 0,
+                                       "description" : "Disable this matcher",
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "dport" : {
-                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-dport-spec",
+                                    "invert-match" : {
+                                       "description" : "Invert match of the whole matcher",
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "enable" : {
-                                       "description" : "Flag to enable/disable a rule.",
-                                       "minimum" : 0,
+                                    "match-calendar" : {
+                                       "description" : "Match notification timestamp",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
-                                       "format" : "pve-fw-icmp-type-spec",
+                                    "match-field" : {
+                                       "description" : "Metadata fields to match (regex or exact match). Must be in the form (regex|exact):<field>=<value>",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "iface" : {
-                                       "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
+                                    "match-severity" : {
+                                       "description" : "Notification severities to match",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     },
-                                    "log" : {
-                                       "description" : "Log level for firewall rule.",
+                                    "mode" : {
+                                       "default" : "all",
+                                       "description" : "Choose between 'all' and 'any' for when multiple properties are specified",
                                        "enum" : [
-                                          "emerg",
-                                          "alert",
-                                          "crit",
-                                          "err",
-                                          "warning",
-                                          "notice",
-                                          "info",
-                                          "debug",
-                                          "nolog"
+                                          "all",
+                                          "any"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "macro" : {
-                                       "description" : "Use predefined standard macro.",
-                                       "maxLength" : 128,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "moveto" : {
-                                       "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "pos" : {
-                                       "description" : "Update rule at position <pos>.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "proto" : {
-                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                       "format" : "pve-fw-protocol-spec",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "source" : {
-                                       "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                       "format" : "pve-fw-addr-spec",
-                                       "maxLength" : 512,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "sport" : {
-                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                       "format" : "pve-fw-sport-spec",
-                                       "optional" : 1,
+                                    "name" : {
+                                       "description" : "Name of the matcher.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "type" : {
-                                       "description" : "Rule type.",
-                                       "enum" : [
-                                          "in",
-                                          "out",
-                                          "group"
-                                       ],
+                                    "target" : {
+                                       "description" : "Targets to notify on match",
+                                       "items" : {
+                                          "format" : "pve-configid",
+                                          "type" : "string"
+                                       },
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/",
+                                    "/mapping/notifications",
                                     [
-                                       "Sys.Modify"
+                                       "Mapping.Modify"
                                     ]
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : null,
                               "returns" : {
                                  "type" : "null"
                               }
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/cluster/firewall/rules/{pos}",
-                        "text" : "{pos}"
+                        "path" : "/cluster/notifications/matchers/{name}",
+                        "text" : "{name}"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "List rules.",
+                        "description" : "Returns a list of all matchers",
                         "method" : "GET",
-                        "name" : "get_rules",
+                        "name" : "get_matchers",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
                         "permissions" : {
                            "check" : [
-                              "perm",
-                              "/",
+                              "or",
                               [
-                                 "Sys.Audit"
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Modify"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Audit"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/mapping/notifications",
+                                 [
+                                    "Mapping.Use"
+                                 ]
                               ]
                            ]
                         },
-                        "proxyto" : null,
+                        "protected" : 1,
                         "returns" : {
                            "items" : {
                               "properties" : {
-                                 "pos" : {
-                                    "type" : "integer"
+                                 "comment" : {
+                                    "description" : "Comment",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "disable" : {
+                                    "default" : 0,
+                                    "description" : "Disable this matcher",
+                                    "optional" : 1,
+                                    "type" : "boolean"
+                                 },
+                                 "invert-match" : {
+                                    "description" : "Invert match of the whole matcher",
+                                    "optional" : 1,
+                                    "type" : "boolean"
+                                 },
+                                 "match-calendar" : {
+                                    "description" : "Match notification timestamp",
+                                    "items" : {
+                                       "type" : "string"
+                                    },
+                                    "optional" : 1,
+                                    "type" : "array"
+                                 },
+                                 "match-field" : {
+                                    "description" : "Metadata fields to match (regex or exact match). Must be in the form (regex|exact):<field>=<value>",
+                                    "items" : {
+                                       "type" : "string"
+                                    },
+                                    "optional" : 1,
+                                    "type" : "array"
+                                 },
+                                 "match-severity" : {
+                                    "description" : "Notification severities to match",
+                                    "items" : {
+                                       "type" : "string"
+                                    },
+                                    "optional" : 1,
+                                    "type" : "array"
+                                 },
+                                 "mode" : {
+                                    "default" : "all",
+                                    "description" : "Choose between 'all' and 'any' for when multiple properties are specified",
+                                    "enum" : [
+                                       "all",
+                                       "any"
+                                    ],
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "Name of the matcher.",
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 },
+                                 "origin" : {
+                                    "description" : "Show if this entry was created by a user or was built-in",
+                                    "enum" : [
+                                       "user-created",
+                                       "builtin",
+                                       "modified-builtin"
+                                    ],
+                                    "type" : "string"
+                                 },
+                                 "target" : {
+                                    "description" : "Targets to notify on match",
+                                    "items" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string"
+                                    },
+                                    "optional" : 1,
+                                    "type" : "array"
                                  }
                               },
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{pos}",
+                                 "href" : "{name}",
                                  "rel" : "child"
                               }
                            ],
@@ -2291,457 +2538,297 @@ const apiSchema = [
                      },
                      "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Create new rule.",
+                        "description" : "Create a new matcher",
                         "method" : "POST",
-                        "name" : "create_rule",
+                        "name" : "create_matcher",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "action" : {
-                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
-                                 "optional" : 0,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
                               "comment" : {
-                                 "description" : "Descriptive comment.",
+                                 "description" : "Comment",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "dest" : {
-                                 "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                 "format" : "pve-fw-addr-spec",
-                                 "maxLength" : 512,
+                              "disable" : {
+                                 "default" : 0,
+                                 "description" : "Disable this matcher",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                              "invert-match" : {
+                                 "description" : "Invert match of the whole matcher",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "dport" : {
-                                 "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                 "format" : "pve-fw-dport-spec",
+                              "match-calendar" : {
+                                 "description" : "Match notification timestamp",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "array",
+                                 "typetext" : "<array>"
                               },
-                              "enable" : {
-                                 "description" : "Flag to enable/disable a rule.",
-                                 "minimum" : 0,
+                              "match-field" : {
+                                 "description" : "Metadata fields to match (regex or exact match). Must be in the form (regex|exact):<field>=<value>",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
                                  "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
+                                 "type" : "array",
+                                 "typetext" : "<array>"
                               },
-                              "icmp-type" : {
-                                 "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
-                                 "format" : "pve-fw-icmp-type-spec",
+                              "match-severity" : {
+                                 "description" : "Notification severities to match",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "array",
+                                 "typetext" : "<array>"
                               },
-                              "iface" : {
-                                 "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
-                                 "format" : "pve-iface",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
+                              "mode" : {
+                                 "default" : "all",
+                                 "description" : "Choose between 'all' and 'any' for when multiple properties are specified",
+                                 "enum" : [
+                                    "all",
+                                    "any"
+                                 ],
                                  "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "name" : {
+                                 "description" : "Name of the matcher.",
+                                 "format" : "pve-configid",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "log" : {
-                                 "description" : "Log level for firewall rule.",
-                                 "enum" : [
-                                    "emerg",
-                                    "alert",
-                                    "crit",
-                                    "err",
-                                    "warning",
-                                    "notice",
-                                    "info",
-                                    "debug",
-                                    "nolog"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "macro" : {
-                                 "description" : "Use predefined standard macro.",
-                                 "maxLength" : 128,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "pos" : {
-                                 "description" : "Update rule at position <pos>.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "proto" : {
-                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
-                                 "format" : "pve-fw-protocol-spec",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "source" : {
-                                 "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
-                                 "format" : "pve-fw-addr-spec",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "sport" : {
-                                 "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
-                                 "format" : "pve-fw-sport-spec",
+                              "target" : {
+                                 "description" : "Targets to notify on match",
+                                 "items" : {
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 },
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Rule type.",
-                                 "enum" : [
-                                    "in",
-                                    "out",
-                                    "group"
-                                 ],
-                                 "optional" : 0,
-                                 "type" : "string"
+                                 "type" : "array",
+                                 "typetext" : "<array>"
                               }
                            }
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/",
+                              "/mapping/notifications",
                               [
-                                 "Sys.Modify"
+                                 "Mapping.Modify"
                               ]
                            ]
                         },
                         "protected" : 1,
-                        "proxyto" : null,
                         "returns" : {
                            "type" : "null"
                         }
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/firewall/rules",
-                  "text" : "rules"
+                  "path" : "/cluster/notifications/matchers",
+                  "text" : "matchers"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Index for notification-related API endpoints.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/notifications",
+            "text" : "notifications"
+         },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Return the version of the cluster join API available on this node.",
+                        "method" : "GET",
+                        "name" : "join_api_version",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "description" : "Cluster Join API version, currently 1",
+                           "minimum" : 0,
+                           "type" : "integer"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/config/apiversion",
+                  "text" : "apiversion"
                },
                {
                   "children" : [
                      {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Remove IP or Network from IPSet.",
-                                    "method" : "DELETE",
-                                    "name" : "remove_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Read IP or Network settings from IPSet.",
-                                    "method" : "GET",
-                                    "name" : "read_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Audit"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "object"
-                                    }
-                                 },
-                                 "PUT" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Update IP or Network settings",
-                                    "method" : "PUT",
-                                    "name" : "update_ip",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "cidr" : {
-                                             "description" : "Network/IP specification in CIDR format.",
-                                             "format" : "IPorCIDRorAlias",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "comment" : {
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "name" : {
-                                             "description" : "IP set name.",
-                                             "maxLength" : 64,
-                                             "minLength" : 2,
-                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                             "type" : "string"
-                                          },
-                                          "nomatch" : {
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/firewall/ipset/{name}/{cidr}",
-                              "text" : "{cidr}"
-                           }
-                        ],
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Delete IPSet",
+                              "description" : "Removes a node from the cluster configuration.",
                               "method" : "DELETE",
-                              "name" : "delete_ipset",
+                              "name" : "delnode",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "force" : {
-                                       "description" : "Delete all members of the IPSet, if there are any.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
                               "protected" : 1,
                               "returns" : {
                                  "type" : "null"
                               }
                            },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List IPSet content",
-                              "method" : "GET",
-                              "name" : "get_ipset",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "cidr" : {
-                                          "type" : "string"
-                                       },
-                                       "comment" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "digest" : {
-                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                          "maxLength" : 40,
-                                          "optional" : 0,
-                                          "type" : "string"
-                                       },
-                                       "nomatch" : {
-                                          "optional" : 1,
-                                          "type" : "boolean"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{cidr}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
                            "POST" : {
                               "allowtoken" : 1,
-                              "description" : "Add IP or Network to IPSet.",
+                              "description" : "Adds a node to the cluster configuration. This call is for internal use.",
                               "method" : "POST",
-                              "name" : "create_ip",
+                              "name" : "addnode",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDRorAlias",
+                                    "apiversion" : {
+                                       "description" : "The JOIN_API_VERSION of the new node.",
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer>"
+                                    },
+                                    "force" : {
+                                       "description" : "Do not throw error if node already exists.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "link[n]" : {
+                                       "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                       "format" : {
+                                          "address" : {
+                                             "default_key" : 1,
+                                             "description" : "Hostname (or IP) of this corosync link address.",
+                                             "format" : "address",
+                                             "format_description" : "IP",
+                                             "type" : "string"
+                                          },
+                                          "priority" : {
+                                             "default" : 0,
+                                             "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                             "maximum" : 255,
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          }
+                                       },
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "[address=]<IP> [,priority=<integer>]"
                                     },
-                                    "comment" : {
+                                    "new_node_ip" : {
+                                       "description" : "IP Address of node to add. Used as fallback if no links are given.",
+                                       "format" : "ip",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "nomatch" : {
+                                    "nodeid" : {
+                                       "description" : "Node id for this node.",
+                                       "minimum" : 1,
                                        "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - N)"
+                                    },
+                                    "votes" : {
+                                       "description" : "Number of votes for this node",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "null"
+                                 "properties" : {
+                                    "corosync_authkey" : {
+                                       "type" : "string"
+                                    },
+                                    "corosync_conf" : {
+                                       "type" : "string"
+                                    },
+                                    "warnings" : {
+                                       "items" : {
+                                          "type" : "string"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 },
+                                 "type" : "object"
                               }
                            }
                         },
-                        "leaf" : 0,
-                        "path" : "/cluster/firewall/ipset/{name}",
-                        "text" : "{name}"
+                        "leaf" : 1,
+                        "path" : "/cluster/config/nodes/{node}",
+                        "text" : "{node}"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "List IPSets",
+                        "description" : "Corosync node list.",
                         "method" : "GET",
-                        "name" : "ipset_index",
+                        "name" : "nodes",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
@@ -2757,21 +2844,7 @@ const apiSchema = [
                         "returns" : {
                            "items" : {
                               "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "description" : "IP set name.",
-                                    "maxLength" : 64,
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "node" : {
                                     "type" : "string"
                                  }
                               },
@@ -2779,47 +2852,35 @@ const apiSchema = [
                            },
                            "links" : [
                               {
-                                 "href" : "{name}",
+                                 "href" : "{node}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
-                     },
-                     "POST" : {
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/config/nodes",
+                  "text" : "nodes"
+               },
+               {
+                  "info" : {
+                     "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Create new IPSet",
-                        "method" : "POST",
-                        "name" : "create_ipset",
+                        "description" : "Get information needed to join this cluster over the connected node.",
+                        "method" : "GET",
+                        "name" : "join_info",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                              "node" : {
+                                 "default" : "current connected node",
+                                 "description" : "The node for which the joinee gets the nodeinfo. ",
+                                 "format" : "pve-node",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "name" : {
-                                 "description" : "IP set name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
-                              "rename" : {
-                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
                               }
                            }
                         },
@@ -2828,258 +2889,169 @@ const apiSchema = [
                               "perm",
                               "/",
                               [
-                                 "Sys.Modify"
+                                 "Sys.Audit"
                               ]
                            ]
                         },
-                        "protected" : 1,
                         "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/ipset",
-                  "text" : "ipset"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Remove IP or Network alias.",
-                              "method" : "DELETE",
-                              "name" : "remove_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Read alias.",
-                              "method" : "GET",
-                              "name" : "read_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "config_digest" : {
+                                 "type" : "string"
                               },
-                              "returns" : {
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update IP or Network alias.",
-                              "method" : "PUT",
-                              "name" : "update_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDR",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "comment" : {
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "Alias name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
+                              "nodelist" : {
+                                 "items" : {
+                                    "additionalProperties" : 1,
+                                    "properties" : {
+                                       "name" : {
+                                          "description" : "The cluster node name.",
+                                          "format" : "pve-node",
+                                          "type" : "string"
+                                       },
+                                       "nodeid" : {
+                                          "description" : "Node id for this node.",
+                                          "minimum" : 1,
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "pve_addr" : {
+                                          "format" : "ip",
+                                          "type" : "string"
+                                       },
+                                       "pve_fp" : {
+                                          "description" : "Certificate SHA 256 fingerprint.",
+                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                          "type" : "string"
+                                       },
+                                       "quorum_votes" : {
+                                          "minimum" : 0,
+                                          "type" : "integer"
+                                       },
+                                       "ring0_addr" : {
+                                          "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                          "format" : {
+                                             "address" : {
+                                                "default_key" : 1,
+                                                "description" : "Hostname (or IP) of this corosync link address.",
+                                                "format" : "address",
+                                                "format_description" : "IP",
+                                                "type" : "string"
+                                             },
+                                             "priority" : {
+                                                "default" : 0,
+                                                "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                                "maximum" : 255,
+                                                "minimum" : 0,
+                                                "optional" : 1,
+                                                "type" : "integer"
+                                             }
+                                          },
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       }
                                     },
-                                    "rename" : {
-                                       "description" : "Rename an existing alias.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "optional" : 1,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
+                              "preferred_node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string"
                               },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
+                              "totem" : {
+                                 "type" : "object"
                               }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/firewall/aliases/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List aliases",
-                        "method" : "GET",
-                        "name" : "get_aliases",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "cidr" : {
-                                    "type" : "string"
-                                 },
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
                            },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
+                           "type" : "object"
                         }
                      },
                      "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Create IP or Network Alias.",
+                        "description" : "Joins this node into an existing cluster. If no links are given, default to IP resolved by node's hostname on single link (fallback fails for clusters with multiple links).",
                         "method" : "POST",
-                        "name" : "create_alias",
+                        "name" : "join",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "cidr" : {
-                                 "description" : "Network/IP specification in CIDR format.",
-                                 "format" : "IPorCIDR",
+                              "fingerprint" : {
+                                 "description" : "Certificate SHA 256 fingerprint.",
+                                 "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                 "type" : "string"
+                              },
+                              "force" : {
+                                 "description" : "Do not throw error if node already exists.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "hostname" : {
+                                 "description" : "Hostname (or IP) of an existing cluster member.",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "comment" : {
+                              "link[n]" : {
+                                 "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                 "format" : {
+                                    "address" : {
+                                       "default_key" : 1,
+                                       "description" : "Hostname (or IP) of this corosync link address.",
+                                       "format" : "address",
+                                       "format_description" : "IP",
+                                       "type" : "string"
+                                    },
+                                    "priority" : {
+                                       "default" : 0,
+                                       "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                       "maximum" : 255,
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[address=]<IP> [,priority=<integer>]"
+                              },
+                              "nodeid" : {
+                                 "description" : "Node id for this node.",
+                                 "minimum" : 1,
                                  "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - N)"
+                              },
+                              "password" : {
+                                 "description" : "Superuser (root) password of peer node.",
+                                 "maxLength" : 128,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "name" : {
-                                 "description" : "Alias name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
+                              "votes" : {
+                                 "description" : "Number of votes for this node",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
                               }
                            }
                         },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "type" : "string"
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/aliases",
-                  "text" : "aliases"
+                  "leaf" : 1,
+                  "path" : "/cluster/config/join",
+                  "text" : "join"
                },
                {
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get Firewall options.",
+                        "description" : "Get corosync totem protocol settings.",
                         "method" : "GET",
-                        "name" : "get_options",
+                        "name" : "totem",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
@@ -3093,272 +3065,42 @@ const apiSchema = [
                            ]
                         },
                         "returns" : {
-                           "properties" : {
-                              "ebtables" : {
-                                 "default" : 1,
-                                 "description" : "Enable ebtables rules cluster wide.",
-                                 "optional" : 1,
-                                 "type" : "boolean"
-                              },
-                              "enable" : {
-                                 "description" : "Enable or disable the firewall cluster wide.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer"
-                              },
-                              "log_ratelimit" : {
-                                 "description" : "Log ratelimiting settings",
-                                 "format" : {
-                                    "burst" : {
-                                       "default" : 5,
-                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "enable" : {
-                                       "default" : "1",
-                                       "default_key" : 1,
-                                       "description" : "Enable or disable log rate limiting",
-                                       "type" : "boolean"
-                                    },
-                                    "rate" : {
-                                       "default" : "1/second",
-                                       "description" : "Frequency with which the burst bucket gets refilled",
-                                       "format_description" : "rate",
-                                       "optional" : 1,
-                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_in" : {
-                                 "description" : "Input policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_out" : {
-                                 "description" : "Output policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           },
                            "type" : "object"
                         }
-                     },
-                     "PUT" : {
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/config/totem",
+                  "text" : "totem"
+               },
+               {
+                  "info" : {
+                     "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Set Firewall options.",
-                        "method" : "PUT",
-                        "name" : "set_options",
+                        "description" : "Get QDevice status",
+                        "method" : "GET",
+                        "name" : "status",
                         "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "format" : "pve-configid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ebtables" : {
-                                 "default" : 1,
-                                 "description" : "Enable ebtables rules cluster wide.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "enable" : {
-                                 "description" : "Enable or disable the firewall cluster wide.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "log_ratelimit" : {
-                                 "description" : "Log ratelimiting settings",
-                                 "format" : {
-                                    "burst" : {
-                                       "default" : 5,
-                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "enable" : {
-                                       "default" : "1",
-                                       "default_key" : 1,
-                                       "description" : "Enable or disable log rate limiting",
-                                       "type" : "boolean"
-                                    },
-                                    "rate" : {
-                                       "default" : "1/second",
-                                       "description" : "Frequency with which the burst bucket gets refilled",
-                                       "format_description" : "rate",
-                                       "optional" : 1,
-                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[enable=]<1|0> [,burst=<integer>] [,rate=<rate>]"
-                              },
-                              "policy_in" : {
-                                 "description" : "Input policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "policy_out" : {
-                                 "description" : "Output policy.",
-                                 "enum" : [
-                                    "ACCEPT",
-                                    "REJECT",
-                                    "DROP"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
+                           "additionalProperties" : 0
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
                               "/",
                               [
-                                 "Sys.Modify"
+                                 "Sys.Audit"
                               ]
                            ]
                         },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "type" : "object"
                         }
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/cluster/firewall/options",
-                  "text" : "options"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List available macros",
-                        "method" : "GET",
-                        "name" : "get_macros",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "descr" : {
-                                    "description" : "More verbose description (if available).",
-                                    "type" : "string"
-                                 },
-                                 "macro" : {
-                                    "description" : "Macro name.",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/firewall/macros",
-                  "text" : "macros"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
-                        "method" : "GET",
-                        "name" : "refs",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "type" : {
-                                 "description" : "Only list references of specified type.",
-                                 "enum" : [
-                                    "alias",
-                                    "ipset"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "type" : "string"
-                                 },
-                                 "ref" : {
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "enum" : [
-                                       "alias",
-                                       "ipset"
-                                    ],
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/firewall/refs",
-                  "text" : "refs"
+                  "path" : "/cluster/config/qdevice",
+                  "text" : "qdevice"
                }
             ],
             "info" : {
@@ -3371,7 +3113,13 @@ const apiSchema = [
                      "additionalProperties" : 0
                   },
                   "permissions" : {
-                     "user" : "all"
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Audit"
+                        ]
+                     ]
                   },
                   "returns" : {
                      "items" : {
@@ -3386,31 +3134,422 @@ const apiSchema = [
                      ],
                      "type" : "array"
                   }
+               },
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Generate new cluster configuration. If no links given, default to local IP address as link0.",
+                  "method" : "POST",
+                  "name" : "create",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "clustername" : {
+                           "description" : "The name of the cluster.",
+                           "format" : "pve-node",
+                           "maxLength" : 15,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "link[n]" : {
+                           "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                           "format" : {
+                              "address" : {
+                                 "default_key" : 1,
+                                 "description" : "Hostname (or IP) of this corosync link address.",
+                                 "format" : "address",
+                                 "format_description" : "IP",
+                                 "type" : "string"
+                              },
+                              "priority" : {
+                                 "default" : 0,
+                                 "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                 "maximum" : 255,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[address=]<IP> [,priority=<integer>]"
+                        },
+                        "nodeid" : {
+                           "description" : "Node id for this node.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "votes" : {
+                           "description" : "Number of votes for this node.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        }
+                     }
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "string"
+                  }
                }
             },
             "leaf" : 0,
-            "path" : "/cluster/firewall",
-            "text" : "firewall"
+            "path" : "/cluster/config",
+            "text" : "config"
          },
          {
             "children" : [
                {
                   "children" : [
                      {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Delete rule.",
+                                    "method" : "DELETE",
+                                    "name" : "delete_rule",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "group" : {
+                                             "description" : "Security Group name.",
+                                             "maxLength" : 18,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          },
+                                          "pos" : {
+                                             "description" : "Update rule at position <pos>.",
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : null,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get single rule data.",
+                                    "method" : "GET",
+                                    "name" : "get_rule",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "group" : {
+                                             "description" : "Security Group name.",
+                                             "maxLength" : 18,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          },
+                                          "pos" : {
+                                             "description" : "Update rule at position <pos>.",
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "proxyto" : null,
+                                    "returns" : {
+                                       "properties" : {
+                                          "action" : {
+                                             "type" : "string"
+                                          },
+                                          "comment" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "dest" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "dport" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "enable" : {
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "icmp-type" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "iface" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "ipversion" : {
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "log" : {
+                                             "description" : "Log level for firewall rule",
+                                             "enum" : [
+                                                "emerg",
+                                                "alert",
+                                                "crit",
+                                                "err",
+                                                "warning",
+                                                "notice",
+                                                "info",
+                                                "debug",
+                                                "nolog"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "macro" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "pos" : {
+                                             "type" : "integer"
+                                          },
+                                          "proto" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "source" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "sport" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "type" : {
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Modify rule data.",
+                                    "method" : "PUT",
+                                    "name" : "update_rule",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "action" : {
+                                             "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                             "maxLength" : 20,
+                                             "minLength" : 2,
+                                             "optional" : 1,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          },
+                                          "comment" : {
+                                             "description" : "Descriptive comment.",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "delete" : {
+                                             "description" : "A list of settings you want to delete.",
+                                             "format" : "pve-configid-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "dest" : {
+                                             "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                             "format" : "pve-fw-addr-spec",
+                                             "maxLength" : 512,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "dport" : {
+                                             "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                             "format" : "pve-fw-dport-spec",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "enable" : {
+                                             "description" : "Flag to enable/disable a rule.",
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "group" : {
+                                             "description" : "Security Group name.",
+                                             "maxLength" : 18,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          },
+                                          "icmp-type" : {
+                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
+                                             "format" : "pve-fw-icmp-type-spec",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "iface" : {
+                                             "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
+                                             "format" : "pve-iface",
+                                             "maxLength" : 20,
+                                             "minLength" : 2,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "log" : {
+                                             "description" : "Log level for firewall rule.",
+                                             "enum" : [
+                                                "emerg",
+                                                "alert",
+                                                "crit",
+                                                "err",
+                                                "warning",
+                                                "notice",
+                                                "info",
+                                                "debug",
+                                                "nolog"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "macro" : {
+                                             "description" : "Use predefined standard macro.",
+                                             "maxLength" : 128,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "moveto" : {
+                                             "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "pos" : {
+                                             "description" : "Update rule at position <pos>.",
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "proto" : {
+                                             "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                             "format" : "pve-fw-protocol-spec",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "source" : {
+                                             "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                             "format" : "pve-fw-addr-spec",
+                                             "maxLength" : 512,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "sport" : {
+                                             "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                             "format" : "pve-fw-sport-spec",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "type" : {
+                                             "description" : "Rule type.",
+                                             "enum" : [
+                                                "in",
+                                                "out",
+                                                "group"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : null,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/firewall/groups/{group}/{pos}",
+                              "text" : "{pos}"
+                           }
+                        ],
                         "info" : {
-                           "GET" : {
+                           "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Returns included guests and the backup status of their disks. Optimized to be used in ExtJS tree views.",
-                              "method" : "GET",
-                              "name" : "get_volume_backup_included",
+                              "description" : "Delete security group.",
+                              "method" : "DELETE",
+                              "name" : "delete_security_group",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "id" : {
-                                       "description" : "The job ID.",
-                                       "maxLength" : 50,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "group" : {
+                                       "description" : "Security Group name.",
+                                       "maxLength" : 18,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
                                     }
                                  }
                               },
@@ -3419,120 +3558,297 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit"
+                                       "Sys.Modify"
                                     ]
                                  ]
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "description" : "Root node of the tree object. Children represent guests, grandchildren represent volumes of that guest.",
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List rules.",
+                              "method" : "GET",
+                              "name" : "get_rules",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
                                  "properties" : {
-                                    "children" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "children" : {
-                                                "description" : "The volumes of the guest with the information if they will be included in backups.",
-                                                "items" : {
-                                                   "properties" : {
-                                                      "id" : {
-                                                         "description" : "Configuration key of the volume.",
-                                                         "type" : "string"
-                                                      },
-                                                      "included" : {
-                                                         "description" : "Whether the volume is included in the backup or not.",
-                                                         "type" : "boolean"
-                                                      },
-                                                      "name" : {
-                                                         "description" : "Name of the volume.",
-                                                         "type" : "string"
-                                                      },
-                                                      "reason" : {
-                                                         "description" : "The reason why the volume is included (or excluded).",
-                                                         "type" : "string"
-                                                      }
-                                                   },
-                                                   "type" : "object"
-                                                },
-                                                "optional" : 1,
-                                                "type" : "array"
-                                             },
-                                             "id" : {
-                                                "description" : "VMID of the guest.",
-                                                "type" : "integer"
-                                             },
-                                             "name" : {
-                                                "description" : "Name of the guest",
-                                                "optional" : 1,
-                                                "type" : "string"
-                                             },
-                                             "type" : {
-                                                "description" : "Type of the guest, VM, CT or unknown for removed but not purged guests.",
-                                                "enum" : [
-                                                   "qemu",
-                                                   "lxc",
-                                                   "unknown"
-                                                ],
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
+                                    "group" : {
+                                       "description" : "Security Group name.",
+                                       "maxLength" : 18,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
                                     }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "proxyto" : null,
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "pos" : {
+                                          "type" : "integer"
+                                       }
+                                    },
+                                    "type" : "object"
                                  },
-                                 "type" : "object"
+                                 "links" : [
+                                    {
+                                       "href" : "{pos}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create new rule.",
+                              "method" : "POST",
+                              "name" : "create_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "action" : {
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 0,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "description" : "Descriptive comment.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dest" : {
+                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dport" : {
+                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                       "format" : "pve-fw-dport-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enable" : {
+                                       "description" : "Flag to enable/disable a rule.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "group" : {
+                                       "description" : "Security Group name.",
+                                       "maxLength" : 18,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "icmp-type" : {
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
+                                       "format" : "pve-fw-icmp-type-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "iface" : {
+                                       "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "log" : {
+                                       "description" : "Log level for firewall rule.",
+                                       "enum" : [
+                                          "emerg",
+                                          "alert",
+                                          "crit",
+                                          "err",
+                                          "warning",
+                                          "notice",
+                                          "info",
+                                          "debug",
+                                          "nolog"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "macro" : {
+                                       "description" : "Use predefined standard macro.",
+                                       "maxLength" : 128,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "proto" : {
+                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                       "format" : "pve-fw-protocol-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "source" : {
+                                       "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "sport" : {
+                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                       "format" : "pve-fw-sport-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "type" : {
+                                       "description" : "Rule type.",
+                                       "enum" : [
+                                          "in",
+                                          "out",
+                                          "group"
+                                       ],
+                                       "optional" : 0,
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : null,
+                              "returns" : {
+                                 "type" : "null"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/cluster/backup/{id}/included_volumes",
-                        "text" : "included_volumes"
+                        "leaf" : 0,
+                        "path" : "/cluster/firewall/groups/{group}",
+                        "text" : "{group}"
                      }
                   ],
                   "info" : {
-                     "DELETE" : {
+                     "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Delete vzdump backup job definition.",
-                        "method" : "DELETE",
-                        "name" : "delete_job",
+                        "description" : "List security groups.",
+                        "method" : "GET",
+                        "name" : "list_security_groups",
                         "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
+                           "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
+                           "user" : "all"
                         },
-                        "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                    "maxLength" : 64,
+                                    "optional" : 0,
+                                    "type" : "string"
+                                 },
+                                 "group" : {
+                                    "description" : "Security Group name.",
+                                    "maxLength" : 18,
+                                    "minLength" : 2,
+                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{group}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
                         }
                      },
-                     "GET" : {
+                     "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Read vzdump backup job definition.",
-                        "method" : "GET",
-                        "name" : "read_job",
+                        "description" : "Create new security group.",
+                        "method" : "POST",
+                        "name" : "create_security_group",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
+                              "comment" : {
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
+                                 "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
+                              },
+                              "group" : {
+                                 "description" : "Security Group name.",
+                                 "maxLength" : 18,
+                                 "minLength" : 2,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              },
+                              "rename" : {
+                                 "description" : "Rename/update an existing security group. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing group.",
+                                 "maxLength" : 18,
+                                 "minLength" : 2,
+                                 "optional" : 1,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
                               }
                            }
                         },
@@ -3541,297 +3857,496 @@ const apiSchema = [
                               "perm",
                               "/",
                               [
-                                 "Sys.Audit"
+                                 "Sys.Modify"
                               ]
                            ]
                         },
+                        "protected" : 1,
                         "returns" : {
-                           "type" : "object"
+                           "type" : "null"
                         }
-                     },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update vzdump backup job definition.",
-                        "method" : "PUT",
-                        "name" : "update_job",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "all" : {
-                                 "default" : 0,
-                                 "description" : "Backup all known guest systems on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "bwlimit" : {
-                                 "default" : 0,
-                                 "description" : "Limit I/O bandwidth (KBytes per second).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "comment" : {
-                                 "description" : "Description for the Job.",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "compress" : {
-                                 "default" : "0",
-                                 "description" : "Compress dump file.",
-                                 "enum" : [
-                                    "0",
-                                    "1",
-                                    "gzip",
-                                    "lzo",
-                                    "zstd"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "format" : "pve-configid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dow" : {
-                                 "description" : "Day of week selection.",
-                                 "format" : "pve-day-of-week-list",
-                                 "optional" : 1,
-                                 "requires" : "starttime",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "dumpdir" : {
-                                 "description" : "Store resulting files to specified directory.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enabled" : {
-                                 "default" : "1",
-                                 "description" : "Enable or disable the job.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "exclude" : {
-                                 "description" : "Exclude specified guest systems (assumes --all)",
-                                 "format" : "pve-vmid-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/groups",
+                  "text" : "groups"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete rule.",
+                              "method" : "DELETE",
+                              "name" : "delete_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    }
+                                 }
                               },
-                              "exclude-path" : {
-                                 "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root,  other paths match relative to each subdirectory.",
-                                 "format" : "string-alist",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
                               },
-                              "id" : {
-                                 "description" : "The job ID.",
-                                 "maxLength" : 50,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "protected" : 1,
+                              "proxyto" : null,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get single rule data.",
+                              "method" : "GET",
+                              "name" : "get_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    }
+                                 }
                               },
-                              "ionice" : {
-                                 "default" : 7,
-                                 "description" : "Set CFQ ionice priority.",
-                                 "maximum" : 8,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 8)"
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
                               },
-                              "lockwait" : {
-                                 "default" : 180,
-                                 "description" : "Maximal time to wait for the global lock (minutes).",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
+                              "proxyto" : null,
+                              "returns" : {
+                                 "properties" : {
+                                    "action" : {
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "dest" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "dport" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "icmp-type" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "iface" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "ipversion" : {
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "log" : {
+                                       "description" : "Log level for firewall rule",
+                                       "enum" : [
+                                          "emerg",
+                                          "alert",
+                                          "crit",
+                                          "err",
+                                          "warning",
+                                          "notice",
+                                          "info",
+                                          "debug",
+                                          "nolog"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "macro" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "pos" : {
+                                       "type" : "integer"
+                                    },
+                                    "proto" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "source" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "sport" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Modify rule data.",
+                              "method" : "PUT",
+                              "name" : "update_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "action" : {
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 1,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "description" : "Descriptive comment.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dest" : {
+                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dport" : {
+                                       "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                       "format" : "pve-fw-dport-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enable" : {
+                                       "description" : "Flag to enable/disable a rule.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "icmp-type" : {
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
+                                       "format" : "pve-fw-icmp-type-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "iface" : {
+                                       "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "log" : {
+                                       "description" : "Log level for firewall rule.",
+                                       "enum" : [
+                                          "emerg",
+                                          "alert",
+                                          "crit",
+                                          "err",
+                                          "warning",
+                                          "notice",
+                                          "info",
+                                          "debug",
+                                          "nolog"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "macro" : {
+                                       "description" : "Use predefined standard macro.",
+                                       "maxLength" : 128,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "moveto" : {
+                                       "description" : "Move rule to new position <moveto>. Other arguments are ignored.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "proto" : {
+                                       "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                       "format" : "pve-fw-protocol-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "source" : {
+                                       "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "sport" : {
+                                       "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                       "format" : "pve-fw-sport-spec",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "type" : {
+                                       "description" : "Rule type.",
+                                       "enum" : [
+                                          "in",
+                                          "out",
+                                          "group"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 }
                               },
-                              "mailnotification" : {
-                                 "default" : "always",
-                                 "description" : "Specify when to send an email",
-                                 "enum" : [
-                                    "always",
-                                    "failure"
-                                 ],
-                                 "optional" : 1,
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : null,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/firewall/rules/{pos}",
+                        "text" : "{pos}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List rules.",
+                        "method" : "GET",
+                        "name" : "get_rules",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "proxyto" : null,
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "pos" : {
+                                    "type" : "integer"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{pos}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create new rule.",
+                        "method" : "POST",
+                        "name" : "create_rule",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "action" : {
+                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                 "maxLength" : 20,
+                                 "minLength" : 2,
+                                 "optional" : 0,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
                                  "type" : "string"
                               },
-                              "mailto" : {
-                                 "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
-                                 "format" : "email-or-username-list",
+                              "comment" : {
+                                 "description" : "Descriptive comment.",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "maxfiles" : {
-                                 "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
-                              },
-                              "mode" : {
-                                 "default" : "snapshot",
-                                 "description" : "Backup mode.",
-                                 "enum" : [
-                                    "snapshot",
-                                    "suspend",
-                                    "stop"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "node" : {
-                                 "description" : "Only run if executed on this node.",
-                                 "format" : "pve-node",
+                              "dest" : {
+                                 "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                 "format" : "pve-fw-addr-spec",
+                                 "maxLength" : 512,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "notes-template" : {
-                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                                 "maxLength" : 1024,
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
                                  "optional" : 1,
-                                 "requires" : "storage",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "performance" : {
-                                 "description" : "Other performance-related settings.",
-                                 "format" : "backup-performance",
+                              "dport" : {
+                                 "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                 "format" : "pve-fw-dport-spec",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[max-workers=<integer>]"
+                                 "typetext" : "<string>"
                               },
-                              "pigz" : {
-                                 "default" : 0,
-                                 "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
+                              "enable" : {
+                                 "description" : "Flag to enable/disable a rule.",
+                                 "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer>"
+                                 "typetext" : "<integer> (0 - N)"
                               },
-                              "pool" : {
-                                 "description" : "Backup all known guest systems included in the specified pool.",
+                              "icmp-type" : {
+                                 "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
+                                 "format" : "pve-fw-icmp-type-spec",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "protected" : {
-                                 "description" : "If true, mark backup(s) as protected.",
-                                 "optional" : 1,
-                                 "requires" : "storage",
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "prune-backups" : {
-                                 "default" : "keep-all=1",
-                                 "description" : "Use these retention options instead of those from the storage configuration.",
-                                 "format" : "prune-backups",
+                              "iface" : {
+                                 "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.",
+                                 "format" : "pve-iface",
+                                 "maxLength" : 20,
+                                 "minLength" : 2,
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
-                              },
-                              "quiet" : {
-                                 "default" : 0,
-                                 "description" : "Be quiet.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "remove" : {
-                                 "default" : 1,
-                                 "description" : "Prune older backups according to 'prune-backups'.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                                 "typetext" : "<string>"
                               },
-                              "repeat-missed" : {
-                                 "default" : 0,
-                                 "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                              "log" : {
+                                 "description" : "Log level for firewall rule.",
+                                 "enum" : [
+                                    "emerg",
+                                    "alert",
+                                    "crit",
+                                    "err",
+                                    "warning",
+                                    "notice",
+                                    "info",
+                                    "debug",
+                                    "nolog"
+                                 ],
                                  "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                                 "type" : "string"
                               },
-                              "schedule" : {
-                                 "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
-                                 "format" : "pve-calendar-event",
+                              "macro" : {
+                                 "description" : "Use predefined standard macro.",
                                  "maxLength" : 128,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "script" : {
-                                 "description" : "Use specified hook script.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "Job Start time.",
-                                 "optional" : 1,
-                                 "pattern" : "\\d{1,2}:\\d{1,2}",
-                                 "type" : "string",
-                                 "typetext" : "HH:MM"
-                              },
-                              "stdexcludes" : {
-                                 "default" : 1,
-                                 "description" : "Exclude temporary files and logs.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stop" : {
-                                 "default" : 0,
-                                 "description" : "Stop running backup jobs on this host.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "stopwait" : {
-                                 "default" : 10,
-                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                              "pos" : {
+                                 "description" : "Update rule at position <pos>.",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
                                  "typetext" : "<integer> (0 - N)"
                               },
-                              "storage" : {
-                                 "description" : "Store resulting file to this storage.",
-                                 "format" : "pve-storage-id",
+                              "proto" : {
+                                 "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.",
+                                 "format" : "pve-fw-protocol-spec",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "tmpdir" : {
-                                 "description" : "Store temporary files to specified directory.",
+                              "source" : {
+                                 "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                 "format" : "pve-fw-addr-spec",
+                                 "maxLength" : 512,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "vmid" : {
-                                 "description" : "The ID of the guest system you want to backup.",
-                                 "format" : "pve-vmid-list",
+                              "sport" : {
+                                 "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.",
+                                 "format" : "pve-fw-sport-spec",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "zstd" : {
-                                 "default" : 1,
-                                 "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer>"
+                              "type" : {
+                                 "description" : "Rule type.",
+                                 "enum" : [
+                                    "in",
+                                    "out",
+                                    "group"
+                                 ],
+                                 "optional" : 0,
+                                 "type" : "string"
                               }
                            }
                         },
@@ -3842,368 +4357,2527 @@ const apiSchema = [
                               [
                                  "Sys.Modify"
                               ]
-                           ],
-                           "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user."
+                           ]
                         },
                         "protected" : 1,
+                        "proxyto" : null,
                         "returns" : {
                            "type" : "null"
                         }
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/backup/{id}",
-                  "text" : "{id}"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "List vzdump backup schedule.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "id" : {
-                              "description" : "The job ID.",
-                              "maxLength" : 50,
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
+                  "path" : "/cluster/firewall/rules",
+                  "text" : "rules"
                },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new vzdump backup job.",
-                  "method" : "POST",
-                  "name" : "create_job",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "all" : {
-                           "default" : 0,
-                           "description" : "Backup all known guest systems on this host.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "bwlimit" : {
-                           "default" : 0,
-                           "description" : "Limit I/O bandwidth (KBytes per second).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "comment" : {
-                           "description" : "Description for the Job.",
-                           "maxLength" : 512,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "compress" : {
-                           "default" : "0",
-                           "description" : "Compress dump file.",
-                           "enum" : [
-                              "0",
-                              "1",
-                              "gzip",
-                              "lzo",
-                              "zstd"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "dow" : {
-                           "default" : "mon,tue,wed,thu,fri,sat,sun",
-                           "description" : "Day of week selection.",
-                           "format" : "pve-day-of-week-list",
-                           "optional" : 1,
-                           "requires" : "starttime",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "dumpdir" : {
-                           "description" : "Store resulting files to specified directory.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "enabled" : {
-                           "default" : "1",
-                           "description" : "Enable or disable the job.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "exclude" : {
-                           "description" : "Exclude specified guest systems (assumes --all)",
-                           "format" : "pve-vmid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "exclude-path" : {
-                           "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root,  other paths match relative to each subdirectory.",
-                           "format" : "string-alist",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "id" : {
-                           "description" : "Job ID (will be autogenerated).",
-                           "format" : "pve-configid",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Remove IP or Network from IPSet.",
+                                    "method" : "DELETE",
+                                    "name" : "remove_ip",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cidr" : {
+                                             "description" : "Network/IP specification in CIDR format.",
+                                             "format" : "IPorCIDRorAlias",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "name" : {
+                                             "description" : "IP set name.",
+                                             "maxLength" : 64,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Read IP or Network settings from IPSet.",
+                                    "method" : "GET",
+                                    "name" : "read_ip",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cidr" : {
+                                             "description" : "Network/IP specification in CIDR format.",
+                                             "format" : "IPorCIDRorAlias",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "name" : {
+                                             "description" : "IP set name.",
+                                             "maxLength" : 64,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Update IP or Network settings",
+                                    "method" : "PUT",
+                                    "name" : "update_ip",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cidr" : {
+                                             "description" : "Network/IP specification in CIDR format.",
+                                             "format" : "IPorCIDRorAlias",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "comment" : {
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "name" : {
+                                             "description" : "IP set name.",
+                                             "maxLength" : 64,
+                                             "minLength" : 2,
+                                             "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                             "type" : "string"
+                                          },
+                                          "nomatch" : {
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/firewall/ipset/{name}/{cidr}",
+                              "text" : "{cidr}"
+                           }
+                        ],
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete IPSet",
+                              "method" : "DELETE",
+                              "name" : "delete_ipset",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "force" : {
+                                       "description" : "Delete all members of the IPSet, if there are any.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List IPSet content",
+                              "method" : "GET",
+                              "name" : "get_ipset",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "cidr" : {
+                                          "type" : "string"
+                                       },
+                                       "comment" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "digest" : {
+                                          "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                          "maxLength" : 64,
+                                          "optional" : 0,
+                                          "type" : "string"
+                                       },
+                                       "nomatch" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{cidr}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Add IP or Network to IPSet.",
+                              "method" : "POST",
+                              "name" : "create_ip",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "cidr" : {
+                                       "description" : "Network/IP specification in CIDR format.",
+                                       "format" : "IPorCIDRorAlias",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comment" : {
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "nomatch" : {
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
                         },
-                        "ionice" : {
-                           "default" : 7,
-                           "description" : "Set CFQ ionice priority.",
-                           "maximum" : 8,
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - 8)"
+                        "leaf" : 0,
+                        "path" : "/cluster/firewall/ipset/{name}",
+                        "text" : "{name}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List IPSets",
+                        "method" : "GET",
+                        "name" : "ipset_index",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "lockwait" : {
-                           "default" : 180,
-                           "description" : "Maximal time to wait for the global lock (minutes).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
                         },
-                        "mailnotification" : {
-                           "default" : "always",
-                           "description" : "Specify when to send an email",
-                           "enum" : [
-                              "always",
-                              "failure"
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                    "maxLength" : 64,
+                                    "optional" : 0,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "IP set name.",
+                                    "maxLength" : 64,
+                                    "minLength" : 2,
+                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
                            ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "mailto" : {
-                           "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
-                           "format" : "email-or-username-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create new IPSet",
+                        "method" : "POST",
+                        "name" : "create_ipset",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "name" : {
+                                 "description" : "IP set name.",
+                                 "maxLength" : 64,
+                                 "minLength" : 2,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              },
+                              "rename" : {
+                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                                 "maxLength" : 64,
+                                 "minLength" : 2,
+                                 "optional" : 1,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              }
+                           }
                         },
-                        "maxfiles" : {
-                           "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
                         },
-                        "mode" : {
-                           "default" : "snapshot",
-                           "description" : "Backup mode.",
-                           "enum" : [
-                              "snapshot",
-                              "suspend",
-                              "stop"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
-                        },
-                        "node" : {
-                           "description" : "Only run if executed on this node.",
-                           "format" : "pve-node",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "notes-template" : {
-                           "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
-                           "maxLength" : 1024,
-                           "optional" : 1,
-                           "requires" : "storage",
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/ipset",
+                  "text" : "ipset"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Remove IP or Network alias.",
+                              "method" : "DELETE",
+                              "name" : "remove_alias",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "description" : "Alias name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Read alias.",
+                              "method" : "GET",
+                              "name" : "read_alias",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "name" : {
+                                       "description" : "Alias name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update IP or Network alias.",
+                              "method" : "PUT",
+                              "name" : "update_alias",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "cidr" : {
+                                       "description" : "Network/IP specification in CIDR format.",
+                                       "format" : "IPorCIDR",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comment" : {
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "description" : "Alias name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "rename" : {
+                                       "description" : "Rename an existing alias.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "optional" : 1,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
                         },
-                        "performance" : {
-                           "description" : "Other performance-related settings.",
-                           "format" : "backup-performance",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[max-workers=<integer>]"
+                        "leaf" : 1,
+                        "path" : "/cluster/firewall/aliases/{name}",
+                        "text" : "{name}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List aliases",
+                        "method" : "GET",
+                        "name" : "get_aliases",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "pigz" : {
-                           "default" : 0,
-                           "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
                         },
-                        "pool" : {
-                           "description" : "Backup all known guest systems included in the specified pool.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "cidr" : {
+                                    "type" : "string"
+                                 },
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                    "maxLength" : 64,
+                                    "optional" : 0,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create IP or Network Alias.",
+                        "method" : "POST",
+                        "name" : "create_alias",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "cidr" : {
+                                 "description" : "Network/IP specification in CIDR format.",
+                                 "format" : "IPorCIDR",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "comment" : {
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "name" : {
+                                 "description" : "Alias name.",
+                                 "maxLength" : 64,
+                                 "minLength" : 2,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              }
+                           }
                         },
-                        "protected" : {
-                           "description" : "If true, mark backup(s) as protected.",
-                           "optional" : 1,
-                           "requires" : "storage",
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
                         },
-                        "prune-backups" : {
-                           "default" : "keep-all=1",
-                           "description" : "Use these retention options instead of those from the storage configuration.",
-                           "format" : "prune-backups",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/aliases",
+                  "text" : "aliases"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get Firewall options.",
+                        "method" : "GET",
+                        "name" : "get_options",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "quiet" : {
-                           "default" : 0,
-                           "description" : "Be quiet.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
                         },
-                        "remove" : {
-                           "default" : 1,
-                           "description" : "Prune older backups according to 'prune-backups'.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "returns" : {
+                           "properties" : {
+                              "ebtables" : {
+                                 "default" : 1,
+                                 "description" : "Enable ebtables rules cluster wide.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "enable" : {
+                                 "description" : "Enable or disable the firewall cluster wide.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              },
+                              "log_ratelimit" : {
+                                 "description" : "Log ratelimiting settings",
+                                 "format" : {
+                                    "burst" : {
+                                       "default" : 5,
+                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "enable" : {
+                                       "default" : "1",
+                                       "default_key" : 1,
+                                       "description" : "Enable or disable log rate limiting",
+                                       "type" : "boolean"
+                                    },
+                                    "rate" : {
+                                       "default" : "1/second",
+                                       "description" : "Frequency with which the burst bucket gets refilled",
+                                       "format_description" : "rate",
+                                       "optional" : 1,
+                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "policy_in" : {
+                                 "description" : "Input policy.",
+                                 "enum" : [
+                                    "ACCEPT",
+                                    "REJECT",
+                                    "DROP"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "policy_out" : {
+                                 "description" : "Output policy.",
+                                 "enum" : [
+                                    "ACCEPT",
+                                    "REJECT",
+                                    "DROP"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Set Firewall options.",
+                        "method" : "PUT",
+                        "name" : "set_options",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ebtables" : {
+                                 "default" : 1,
+                                 "description" : "Enable ebtables rules cluster wide.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "enable" : {
+                                 "description" : "Enable or disable the firewall cluster wide.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "log_ratelimit" : {
+                                 "description" : "Log ratelimiting settings",
+                                 "format" : {
+                                    "burst" : {
+                                       "default" : 5,
+                                       "description" : "Initial burst of packages which will always get logged before the rate is applied",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "enable" : {
+                                       "default" : "1",
+                                       "default_key" : 1,
+                                       "description" : "Enable or disable log rate limiting",
+                                       "type" : "boolean"
+                                    },
+                                    "rate" : {
+                                       "default" : "1/second",
+                                       "description" : "Frequency with which the burst bucket gets refilled",
+                                       "format_description" : "rate",
+                                       "optional" : 1,
+                                       "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[enable=]<1|0> [,burst=<integer>] [,rate=<rate>]"
+                              },
+                              "policy_in" : {
+                                 "description" : "Input policy.",
+                                 "enum" : [
+                                    "ACCEPT",
+                                    "REJECT",
+                                    "DROP"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "policy_out" : {
+                                 "description" : "Output policy.",
+                                 "enum" : [
+                                    "ACCEPT",
+                                    "REJECT",
+                                    "DROP"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
                         },
-                        "repeat-missed" : {
-                           "default" : 0,
-                           "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
                         },
-                        "schedule" : {
-                           "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
-                           "format" : "pve-calendar-event",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/firewall/options",
+                  "text" : "options"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List available macros",
+                        "method" : "GET",
+                        "name" : "get_macros",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "script" : {
-                           "description" : "Use specified hook script.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "permissions" : {
+                           "user" : "all"
                         },
-                        "starttime" : {
-                           "description" : "Job Start time.",
-                           "optional" : 1,
-                           "pattern" : "\\d{1,2}:\\d{1,2}",
-                           "type" : "string",
-                           "typetext" : "HH:MM"
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "descr" : {
+                                    "description" : "More verbose description (if available).",
+                                    "type" : "string"
+                                 },
+                                 "macro" : {
+                                    "description" : "Macro name.",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/firewall/macros",
+                  "text" : "macros"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.",
+                        "method" : "GET",
+                        "name" : "refs",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "type" : {
+                                 "description" : "Only list references of specified type.",
+                                 "enum" : [
+                                    "alias",
+                                    "ipset"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
                         },
-                        "stdexcludes" : {
-                           "default" : 1,
-                           "description" : "Exclude temporary files and logs.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
                         },
-                        "stop" : {
-                           "default" : 0,
-                           "description" : "Stop running backup jobs on this host.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "type" : "string"
+                                 },
+                                 "ref" : {
+                                    "type" : "string"
+                                 },
+                                 "scope" : {
+                                    "type" : "string"
+                                 },
+                                 "type" : {
+                                    "enum" : [
+                                       "alias",
+                                       "ipset"
+                                    ],
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/firewall/refs",
+                  "text" : "refs"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Directory index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/firewall",
+            "text" : "firewall"
+         },
+         {
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Returns included guests and the backup status of their disks. Optimized to be used in ExtJS tree views.",
+                              "method" : "GET",
+                              "name" : "get_volume_backup_included",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "The job ID.",
+                                       "maxLength" : 50,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "description" : "Root node of the tree object. Children represent guests, grandchildren represent volumes of that guest.",
+                                 "properties" : {
+                                    "children" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "children" : {
+                                                "description" : "The volumes of the guest with the information if they will be included in backups.",
+                                                "items" : {
+                                                   "properties" : {
+                                                      "id" : {
+                                                         "description" : "Configuration key of the volume.",
+                                                         "type" : "string"
+                                                      },
+                                                      "included" : {
+                                                         "description" : "Whether the volume is included in the backup or not.",
+                                                         "type" : "boolean"
+                                                      },
+                                                      "name" : {
+                                                         "description" : "Name of the volume.",
+                                                         "type" : "string"
+                                                      },
+                                                      "reason" : {
+                                                         "description" : "The reason why the volume is included (or excluded).",
+                                                         "type" : "string"
+                                                      }
+                                                   },
+                                                   "type" : "object"
+                                                },
+                                                "optional" : 1,
+                                                "type" : "array"
+                                             },
+                                             "id" : {
+                                                "description" : "VMID of the guest.",
+                                                "type" : "integer"
+                                             },
+                                             "name" : {
+                                                "description" : "Name of the guest",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "type" : {
+                                                "description" : "Type of the guest, VM, CT or unknown for removed but not purged guests.",
+                                                "enum" : [
+                                                   "qemu",
+                                                   "lxc",
+                                                   "unknown"
+                                                ],
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           }
                         },
-                        "stopwait" : {
-                           "default" : 10,
-                           "description" : "Maximal time to wait until a guest system is stopped (minutes).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
+                        "leaf" : 1,
+                        "path" : "/cluster/backup/{id}/included_volumes",
+                        "text" : "included_volumes"
+                     }
+                  ],
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Delete vzdump backup job definition.",
+                        "method" : "DELETE",
+                        "name" : "delete_job",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "id" : {
+                                 "description" : "The job ID.",
+                                 "maxLength" : 50,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
-                        "storage" : {
-                           "description" : "Store resulting file to this storage.",
-                           "format" : "pve-storage-id",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
                         },
-                        "tmpdir" : {
-                           "description" : "Store temporary files to specified directory.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read vzdump backup job definition.",
+                        "method" : "GET",
+                        "name" : "read_job",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "id" : {
+                                 "description" : "The job ID.",
+                                 "maxLength" : 50,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
-                        "vmid" : {
-                           "description" : "The ID of the guest system you want to backup.",
-                           "format" : "pve-vmid-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Update vzdump backup job definition.",
+                        "method" : "PUT",
+                        "name" : "update_job",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "all" : {
+                                 "default" : 0,
+                                 "description" : "Backup all known guest systems on this host.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "bwlimit" : {
+                                 "default" : 0,
+                                 "description" : "Limit I/O bandwidth (in KiB/s).",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "comment" : {
+                                 "description" : "Description for the Job.",
+                                 "maxLength" : 512,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "compress" : {
+                                 "default" : "0",
+                                 "description" : "Compress dump file.",
+                                 "enum" : [
+                                    "0",
+                                    "1",
+                                    "gzip",
+                                    "lzo",
+                                    "zstd"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "dow" : {
+                                 "description" : "Day of week selection.",
+                                 "format" : "pve-day-of-week-list",
+                                 "optional" : 1,
+                                 "requires" : "starttime",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "dumpdir" : {
+                                 "description" : "Store resulting files to specified directory.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "enabled" : {
+                                 "default" : "1",
+                                 "description" : "Enable or disable the job.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "exclude" : {
+                                 "description" : "Exclude specified guest systems (assumes --all)",
+                                 "format" : "pve-vmid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "exclude-path" : {
+                                 "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array",
+                                 "typetext" : "<array>"
+                              },
+                              "fleecing" : {
+                                 "description" : "Options for backup fleecing (VM only).",
+                                 "format" : "backup-fleecing",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[[enabled=]<1|0>] [,storage=<storage ID>]"
+                              },
+                              "id" : {
+                                 "description" : "The job ID.",
+                                 "maxLength" : 50,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ionice" : {
+                                 "default" : 7,
+                                 "description" : "Set IO priority when using the BFQ scheduler. For snapshot and suspend mode backups of VMs, this only affects the compressor. A value of 8 means the idle priority is used, otherwise the best-effort priority is used with the specified value.",
+                                 "maximum" : 8,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 8)"
+                              },
+                              "lockwait" : {
+                                 "default" : 180,
+                                 "description" : "Maximal time to wait for the global lock (minutes).",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "mailnotification" : {
+                                 "default" : "always",
+                                 "description" : "Deprecated: use notification targets/matchers instead. Specify when to send a notification mail",
+                                 "enum" : [
+                                    "always",
+                                    "failure"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "mailto" : {
+                                 "description" : "Deprecated: Use notification targets/matchers instead. Comma-separated list of email addresses or users that should receive email notifications.",
+                                 "format" : "email-or-username-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "maxfiles" : {
+                                 "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - N)"
+                              },
+                              "mode" : {
+                                 "default" : "snapshot",
+                                 "description" : "Backup mode.",
+                                 "enum" : [
+                                    "snapshot",
+                                    "suspend",
+                                    "stop"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "node" : {
+                                 "description" : "Only run if executed on this node.",
+                                 "format" : "pve-node",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "notes-template" : {
+                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                                 "maxLength" : 1024,
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "notification-mode" : {
+                                 "default" : "auto",
+                                 "description" : "Determine which notification system to use. If set to 'legacy-sendmail', vzdump will consider the mailto/mailnotification parameters and send emails to the specified address(es) via the 'sendmail' command. If set to 'notification-system', a notification will be sent via PVE's notification system, and the mailto and mailnotification will be ignored. If set to 'auto' (default setting), an email will be sent if mailto is set, and the notification system will be used if not.",
+                                 "enum" : [
+                                    "auto",
+                                    "legacy-sendmail",
+                                    "notification-system"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "notification-policy" : {
+                                 "default" : "always",
+                                 "description" : "Deprecated: Do not use",
+                                 "enum" : [
+                                    "always",
+                                    "failure",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "notification-target" : {
+                                 "description" : "Deprecated: Do not use",
+                                 "format" : "pve-configid",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "performance" : {
+                                 "description" : "Other performance-related settings.",
+                                 "format" : "backup-performance",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[max-workers=<integer>] [,pbs-entries-max=<integer>]"
+                              },
+                              "pigz" : {
+                                 "default" : 0,
+                                 "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              },
+                              "pool" : {
+                                 "description" : "Backup all known guest systems included in the specified pool.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "protected" : {
+                                 "description" : "If true, mark backup(s) as protected.",
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "prune-backups" : {
+                                 "default" : "keep-all=1",
+                                 "description" : "Use these retention options instead of those from the storage configuration.",
+                                 "format" : "prune-backups",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+                              },
+                              "quiet" : {
+                                 "default" : 0,
+                                 "description" : "Be quiet.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "remove" : {
+                                 "default" : 1,
+                                 "description" : "Prune older backups according to 'prune-backups'.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "repeat-missed" : {
+                                 "default" : 0,
+                                 "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "schedule" : {
+                                 "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                                 "format" : "pve-calendar-event",
+                                 "maxLength" : 128,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "script" : {
+                                 "description" : "Use specified hook script.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "starttime" : {
+                                 "description" : "Job Start time.",
+                                 "optional" : 1,
+                                 "pattern" : "\\d{1,2}:\\d{1,2}",
+                                 "type" : "string",
+                                 "typetext" : "HH:MM"
+                              },
+                              "stdexcludes" : {
+                                 "default" : 1,
+                                 "description" : "Exclude temporary files and logs.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "stop" : {
+                                 "default" : 0,
+                                 "description" : "Stop running backup jobs on this host.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "stopwait" : {
+                                 "default" : 10,
+                                 "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "storage" : {
+                                 "description" : "Store resulting file to this storage.",
+                                 "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<storage ID>"
+                              },
+                              "tmpdir" : {
+                                 "description" : "Store temporary files to specified directory.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "vmid" : {
+                                 "description" : "The ID of the guest system you want to backup.",
+                                 "format" : "pve-vmid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "zstd" : {
+                                 "default" : 1,
+                                 "description" : "Zstd threads. N=0 uses half of the available cores, if N is set to a value bigger than 0, N is used as thread count.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ],
+                           "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user."
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/backup/{id}",
+                  "text" : "{id}"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "List vzdump backup schedule.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Audit"
+                        ]
+                     ]
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "id" : {
+                              "description" : "The job ID.",
+                              "maxLength" : 50,
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{id}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               },
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Create new vzdump backup job.",
+                  "method" : "POST",
+                  "name" : "create_job",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "all" : {
+                           "default" : 0,
+                           "description" : "Backup all known guest systems on this host.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "bwlimit" : {
+                           "default" : 0,
+                           "description" : "Limit I/O bandwidth (in KiB/s).",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "comment" : {
+                           "description" : "Description for the Job.",
+                           "maxLength" : 512,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "compress" : {
+                           "default" : "0",
+                           "description" : "Compress dump file.",
+                           "enum" : [
+                              "0",
+                              "1",
+                              "gzip",
+                              "lzo",
+                              "zstd"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "dow" : {
+                           "default" : "mon,tue,wed,thu,fri,sat,sun",
+                           "description" : "Day of week selection.",
+                           "format" : "pve-day-of-week-list",
+                           "optional" : 1,
+                           "requires" : "starttime",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "dumpdir" : {
+                           "description" : "Store resulting files to specified directory.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "enabled" : {
+                           "default" : "1",
+                           "description" : "Enable or disable the job.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "exclude" : {
+                           "description" : "Exclude specified guest systems (assumes --all)",
+                           "format" : "pve-vmid-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "exclude-path" : {
+                           "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
+                           "items" : {
+                              "type" : "string"
+                           },
+                           "optional" : 1,
+                           "type" : "array",
+                           "typetext" : "<array>"
+                        },
+                        "fleecing" : {
+                           "description" : "Options for backup fleecing (VM only).",
+                           "format" : "backup-fleecing",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[[enabled=]<1|0>] [,storage=<storage ID>]"
+                        },
+                        "id" : {
+                           "description" : "Job ID (will be autogenerated).",
+                           "format" : "pve-configid",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "ionice" : {
+                           "default" : 7,
+                           "description" : "Set IO priority when using the BFQ scheduler. For snapshot and suspend mode backups of VMs, this only affects the compressor. A value of 8 means the idle priority is used, otherwise the best-effort priority is used with the specified value.",
+                           "maximum" : 8,
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - 8)"
+                        },
+                        "lockwait" : {
+                           "default" : 180,
+                           "description" : "Maximal time to wait for the global lock (minutes).",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "mailnotification" : {
+                           "default" : "always",
+                           "description" : "Deprecated: use notification targets/matchers instead. Specify when to send a notification mail",
+                           "enum" : [
+                              "always",
+                              "failure"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "mailto" : {
+                           "description" : "Deprecated: Use notification targets/matchers instead. Comma-separated list of email addresses or users that should receive email notifications.",
+                           "format" : "email-or-username-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "maxfiles" : {
+                           "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per guest system.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "mode" : {
+                           "default" : "snapshot",
+                           "description" : "Backup mode.",
+                           "enum" : [
+                              "snapshot",
+                              "suspend",
+                              "stop"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "node" : {
+                           "description" : "Only run if executed on this node.",
+                           "format" : "pve-node",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "notes-template" : {
+                           "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                           "maxLength" : 1024,
+                           "optional" : 1,
+                           "requires" : "storage",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "notification-mode" : {
+                           "default" : "auto",
+                           "description" : "Determine which notification system to use. If set to 'legacy-sendmail', vzdump will consider the mailto/mailnotification parameters and send emails to the specified address(es) via the 'sendmail' command. If set to 'notification-system', a notification will be sent via PVE's notification system, and the mailto and mailnotification will be ignored. If set to 'auto' (default setting), an email will be sent if mailto is set, and the notification system will be used if not.",
+                           "enum" : [
+                              "auto",
+                              "legacy-sendmail",
+                              "notification-system"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "notification-policy" : {
+                           "default" : "always",
+                           "description" : "Deprecated: Do not use",
+                           "enum" : [
+                              "always",
+                              "failure",
+                              "never"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "notification-target" : {
+                           "description" : "Deprecated: Do not use",
+                           "format" : "pve-configid",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "performance" : {
+                           "description" : "Other performance-related settings.",
+                           "format" : "backup-performance",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[max-workers=<integer>] [,pbs-entries-max=<integer>]"
+                        },
+                        "pigz" : {
+                           "default" : 0,
+                           "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer>"
+                        },
+                        "pool" : {
+                           "description" : "Backup all known guest systems included in the specified pool.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "protected" : {
+                           "description" : "If true, mark backup(s) as protected.",
+                           "optional" : 1,
+                           "requires" : "storage",
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "prune-backups" : {
+                           "default" : "keep-all=1",
+                           "description" : "Use these retention options instead of those from the storage configuration.",
+                           "format" : "prune-backups",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly=<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]"
+                        },
+                        "quiet" : {
+                           "default" : 0,
+                           "description" : "Be quiet.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "remove" : {
+                           "default" : 1,
+                           "description" : "Prune older backups according to 'prune-backups'.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "repeat-missed" : {
+                           "default" : 0,
+                           "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "schedule" : {
+                           "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                           "format" : "pve-calendar-event",
+                           "maxLength" : 128,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "script" : {
+                           "description" : "Use specified hook script.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "starttime" : {
+                           "description" : "Job Start time.",
+                           "optional" : 1,
+                           "pattern" : "\\d{1,2}:\\d{1,2}",
+                           "type" : "string",
+                           "typetext" : "HH:MM"
+                        },
+                        "stdexcludes" : {
+                           "default" : 1,
+                           "description" : "Exclude temporary files and logs.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "stop" : {
+                           "default" : 0,
+                           "description" : "Stop running backup jobs on this host.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "stopwait" : {
+                           "default" : 10,
+                           "description" : "Maximal time to wait until a guest system is stopped (minutes).",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "storage" : {
+                           "description" : "Store resulting file to this storage.",
+                           "format" : "pve-storage-id",
+                           "format_description" : "storage ID",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<storage ID>"
+                        },
+                        "tmpdir" : {
+                           "description" : "Store temporary files to specified directory.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "vmid" : {
+                           "description" : "The ID of the guest system you want to backup.",
+                           "format" : "pve-vmid-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "zstd" : {
+                           "default" : 1,
+                           "description" : "Zstd threads. N=0 uses half of the available cores, if N is set to a value bigger than 0, N is used as thread count.",
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer>"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Modify"
+                        ]
+                     ],
+                     "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user."
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/backup",
+            "text" : "backup"
+         },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Shows all guests which are not covered by any backup job.",
+                        "method" : "GET",
+                        "name" : "get_guests_not_in_backup",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "description" : "Contains the guest objects.",
+                           "items" : {
+                              "properties" : {
+                                 "name" : {
+                                    "description" : "Name of the guest",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "type" : {
+                                    "description" : "Type of the guest.",
+                                    "enum" : [
+                                       "qemu",
+                                       "lxc"
+                                    ],
+                                    "type" : "string"
+                                 },
+                                 "vmid" : {
+                                    "description" : "VMID of the guest.",
+                                    "type" : "integer"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/backup-info/not-backed-up",
+                  "text" : "not-backed-up"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Index for backup info related endpoints",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "returns" : {
+                     "description" : "Directory index.",
+                     "items" : {
+                        "properties" : {
+                           "subdir" : {
+                              "description" : "API sub-directory endpoint",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{subdir}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/backup-info",
+            "text" : "backup-info"
+         },
+         {
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Request resource migration (online) to another node.",
+                                    "method" : "POST",
+                                    "name" : "migrate",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "Target node.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "sid" : {
+                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                             "format" : "pve-ha-resource-or-vm-id",
+                                             "type" : "string",
+                                             "typetext" : "<type>:<name>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Console"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/ha/resources/{sid}/migrate",
+                              "text" : "migrate"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Request resource relocatzion to another node. This stops the service on the old node, and restarts it on the target node.",
+                                    "method" : "POST",
+                                    "name" : "relocate",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "Target node.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "sid" : {
+                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                             "format" : "pve-ha-resource-or-vm-id",
+                                             "type" : "string",
+                                             "typetext" : "<type>:<name>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Console"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/ha/resources/{sid}/relocate",
+                              "text" : "relocate"
+                           }
+                        ],
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete resource configuration.",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "sid" : {
+                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                       "format" : "pve-ha-resource-or-vm-id",
+                                       "type" : "string",
+                                       "typetext" : "<type>:<name>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Console"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Read resource configuration.",
+                              "method" : "GET",
+                              "name" : "read",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "sid" : {
+                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                       "format" : "pve-ha-resource-or-vm-id",
+                                       "type" : "string",
+                                       "typetext" : "<type>:<name>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "properties" : {
+                                    "comment" : {
+                                       "description" : "Description.",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "digest" : {
+                                       "description" : "Can be used to prevent concurrent modifications.",
+                                       "type" : "string"
+                                    },
+                                    "group" : {
+                                       "description" : "The HA group identifier.",
+                                       "format" : "pve-configid",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "max_relocate" : {
+                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "max_restart" : {
+                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "sid" : {
+                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                       "format" : "pve-ha-resource-or-vm-id",
+                                       "type" : "string",
+                                       "typetext" : "<type>:<name>"
+                                    },
+                                    "state" : {
+                                       "description" : "Requested resource state.",
+                                       "enum" : [
+                                          "started",
+                                          "stopped",
+                                          "enabled",
+                                          "disabled",
+                                          "ignored"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "description" : "The type of the resources.",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update resource configuration.",
+                              "method" : "PUT",
+                              "name" : "update",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "comment" : {
+                                       "description" : "Description.",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "group" : {
+                                       "description" : "The HA group identifier.",
+                                       "format" : "pve-configid",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "max_relocate" : {
+                                       "default" : 1,
+                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "max_restart" : {
+                                       "default" : 1,
+                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "sid" : {
+                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                       "format" : "pve-ha-resource-or-vm-id",
+                                       "type" : "string",
+                                       "typetext" : "<type>:<name>"
+                                    },
+                                    "state" : {
+                                       "default" : "started",
+                                       "description" : "Requested resource state.",
+                                       "enum" : [
+                                          "started",
+                                          "stopped",
+                                          "enabled",
+                                          "disabled",
+                                          "ignored"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Console"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/cluster/ha/resources/{sid}",
+                        "text" : "{sid}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List HA resources.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "type" : {
+                                 "description" : "Only list resources of specific type",
+                                 "enum" : [
+                                    "ct",
+                                    "vm"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "sid" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{sid}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create a new HA resource.",
+                        "method" : "POST",
+                        "name" : "create",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "description" : "Description.",
+                                 "maxLength" : 4096,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "group" : {
+                                 "description" : "The HA group identifier.",
+                                 "format" : "pve-configid",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "max_relocate" : {
+                                 "default" : 1,
+                                 "description" : "Maximal number of service relocate tries when a service failes to start.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "max_restart" : {
+                                 "default" : 1,
+                                 "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "sid" : {
+                                 "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
+                                 "format" : "pve-ha-resource-or-vm-id",
+                                 "type" : "string",
+                                 "typetext" : "<type>:<name>"
+                              },
+                              "state" : {
+                                 "default" : "started",
+                                 "description" : "Requested resource state.",
+                                 "enum" : [
+                                    "started",
+                                    "stopped",
+                                    "enabled",
+                                    "disabled",
+                                    "ignored"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                              },
+                              "type" : {
+                                 "description" : "Resource type.",
+                                 "enum" : [
+                                    "ct",
+                                    "vm"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Console"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/ha/resources",
+                  "text" : "resources"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete ha group configuration.",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "group" : {
+                                       "description" : "The HA group identifier.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Console"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Read ha group configuration.",
+                              "method" : "GET",
+                              "name" : "read",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "group" : {
+                                       "description" : "The HA group identifier.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {}
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update ha group configuration.",
+                              "method" : "PUT",
+                              "name" : "update",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "comment" : {
+                                       "description" : "Description.",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "group" : {
+                                       "description" : "The HA group identifier.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "nodes" : {
+                                       "description" : "List of cluster node names with optional priority.",
+                                       "format" : "pve-ha-group-node-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
+                                       "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
+                                    },
+                                    "nofailback" : {
+                                       "default" : 0,
+                                       "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "restricted" : {
+                                       "default" : 0,
+                                       "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>",
+                                       "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Console"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
                         },
-                        "zstd" : {
-                           "default" : 1,
-                           "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.",
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer>"
-                        }
+                        "leaf" : 1,
+                        "path" : "/cluster/ha/groups/{group}",
+                        "text" : "{group}"
                      }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Modify"
-                        ]
-                     ],
-                     "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/backup",
-            "text" : "backup"
-         },
-         {
-            "children" : [
-               {
+                  ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Shows all guests which are not covered by any backup job.",
+                        "description" : "Get HA groups.",
                         "method" : "GET",
-                        "name" : "get_guests_not_in_backup",
+                        "name" : "index",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
@@ -4216,55 +6890,277 @@ const apiSchema = [
                               ]
                            ]
                         },
-                        "protected" : 1,
                         "returns" : {
-                           "description" : "Contains the guest objects.",
                            "items" : {
                               "properties" : {
-                                 "name" : {
-                                    "description" : "Name of the guest",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "type" : {
-                                    "description" : "Type of the guest.",
-                                    "enum" : [
-                                       "qemu",
-                                       "lxc"
-                                    ],
+                                 "group" : {
                                     "type" : "string"
-                                 },
-                                 "vmid" : {
-                                    "description" : "VMID of the guest.",
-                                    "type" : "integer"
                                  }
                               },
                               "type" : "object"
                            },
+                           "links" : [
+                              {
+                                 "href" : "{group}",
+                                 "rel" : "child"
+                              }
+                           ],
                            "type" : "array"
                         }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create a new HA group.",
+                        "method" : "POST",
+                        "name" : "create",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "description" : "Description.",
+                                 "maxLength" : 4096,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "group" : {
+                                 "description" : "The HA group identifier.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "nodes" : {
+                                 "description" : "List of cluster node names with optional priority.",
+                                 "format" : "pve-ha-group-node-list",
+                                 "optional" : 0,
+                                 "type" : "string",
+                                 "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
+                                 "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
+                              },
+                              "nofailback" : {
+                                 "default" : 0,
+                                 "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "restricted" : {
+                                 "default" : 0,
+                                 "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>",
+                                 "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
+                              },
+                              "type" : {
+                                 "description" : "Group type.",
+                                 "enum" : [
+                                    "group"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Console"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/cluster/backup-info/not-backed-up",
-                  "text" : "not-backed-up"
+                  "leaf" : 0,
+                  "path" : "/cluster/ha/groups",
+                  "text" : "groups"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get HA manger status.",
+                              "method" : "GET",
+                              "name" : "status",
+                              "parameters" : {
+                                 "additionalProperties" : 0
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "crm_state" : {
+                                          "description" : "For type 'service'. Service state as seen by the CRM.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "id" : {
+                                          "description" : "Status entry ID (quorum, master, lrm:<node>, service:<sid>).",
+                                          "type" : "string"
+                                       },
+                                       "max_relocate" : {
+                                          "description" : "For type 'service'.",
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "max_restart" : {
+                                          "description" : "For type 'service'.",
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "node" : {
+                                          "description" : "Node associated to status entry.",
+                                          "type" : "string"
+                                       },
+                                       "quorate" : {
+                                          "description" : "For type 'quorum'. Whether the cluster is quorate or not.",
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "request_state" : {
+                                          "description" : "For type 'service'. Requested service state.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "sid" : {
+                                          "description" : "For type 'service'. Service ID.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "state" : {
+                                          "description" : "For type 'service'. Verbose service state.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "status" : {
+                                          "description" : "Status of the entry (value depends on type).",
+                                          "type" : "string"
+                                       },
+                                       "timestamp" : {
+                                          "description" : "For type 'lrm','master'. Timestamp of the status information.",
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "type" : {
+                                          "description" : "Type of status entry.",
+                                          "enum" : [
+                                             "quorum",
+                                             "master",
+                                             "lrm",
+                                             "service"
+                                          ]
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/ha/status/current",
+                        "text" : "current"
+                     },
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get full HA manger status, including LRM status.",
+                              "method" : "GET",
+                              "name" : "manager_status",
+                              "parameters" : {
+                                 "additionalProperties" : 0
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "type" : "object"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/ha/status/manager_status",
+                        "text" : "manager_status"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Directory index.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/ha/status",
+                  "text" : "status"
                }
             ],
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Index for backup info related endpoints",
+                  "description" : "Directory index.",
                   "method" : "GET",
                   "name" : "index",
                   "parameters" : {
                      "additionalProperties" : 0
                   },
+                  "permissions" : {
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Audit"
+                        ]
+                     ]
+                  },
                   "returns" : {
-                     "description" : "Directory index.",
                      "items" : {
                         "properties" : {
-                           "subdir" : {
-                              "description" : "API sub-directory endpoint",
+                           "id" : {
                               "type" : "string"
                            }
                         },
@@ -4272,7 +7168,7 @@ const apiSchema = [
                      },
                      "links" : [
                         {
-                           "href" : "{subdir}",
+                           "href" : "{id}",
                            "rel" : "child"
                         }
                      ],
@@ -4281,116 +7177,28 @@ const apiSchema = [
                }
             },
             "leaf" : 0,
-            "path" : "/cluster/backup-info",
-            "text" : "backup-info"
+            "path" : "/cluster/ha",
+            "text" : "ha"
          },
          {
             "children" : [
                {
                   "children" : [
                      {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Request resource migration (online) to another node.",
-                                    "method" : "POST",
-                                    "name" : "migrate",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "sid" : {
-                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                             "format" : "pve-ha-resource-or-vm-id",
-                                             "type" : "string",
-                                             "typetext" : "<type>:<name>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/ha/resources/{sid}/migrate",
-                              "text" : "migrate"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Request resource relocatzion to another node. This stops the service on the old node, and restarts it on the target node.",
-                                    "method" : "POST",
-                                    "name" : "relocate",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "Target node.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "sid" : {
-                                             "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                             "format" : "pve-ha-resource-or-vm-id",
-                                             "type" : "string",
-                                             "typetext" : "<type>:<name>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Console"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/cluster/ha/resources/{sid}/relocate",
-                              "text" : "relocate"
-                           }
-                        ],
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Delete resource configuration.",
+                              "description" : "Delete ACME plugin configuration.",
                               "method" : "DELETE",
-                              "name" : "delete",
+                              "name" : "delete_plugin",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
+                                    "id" : {
+                                       "description" : "Unique identifier for ACME plugin instance.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
-                                       "typetext" : "<type>:<name>"
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
@@ -4399,7 +7207,7 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Console"
+                                       "Sys.Modify"
                                     ]
                                  ]
                               },
@@ -4410,17 +7218,17 @@ const apiSchema = [
                            },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Read resource configuration.",
+                              "description" : "Get ACME plugin configuration.",
                               "method" : "GET",
-                              "name" : "read",
+                              "name" : "get_plugin_config",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
+                                    "id" : {
+                                       "description" : "Unique identifier for ACME plugin instance.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
-                                       "typetext" : "<type>:<name>"
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
@@ -4429,74 +7237,177 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit"
+                                       "Sys.Modify"
                                     ]
                                  ]
                               },
+                              "protected" : 1,
                               "returns" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update ACME plugin configuration.",
+                              "method" : "PUT",
+                              "name" : "update_plugin",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
                                  "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "digest" : {
-                                       "description" : "Can be used to prevent concurrent modifications.",
-                                       "type" : "string"
-                                    },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "max_relocate" : {
-                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "max_restart" : {
-                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    },
-                                    "state" : {
-                                       "description" : "Requested resource state.",
+                                    "api" : {
+                                       "description" : "API plugin name",
                                        "enum" : [
-                                          "started",
-                                          "stopped",
-                                          "enabled",
-                                          "disabled",
-                                          "ignored"
+                                          "1984hosting",
+                                          "acmedns",
+                                          "acmeproxy",
+                                          "active24",
+                                          "ad",
+                                          "ali",
+                                          "anx",
+                                          "artfiles",
+                                          "arvan",
+                                          "aurora",
+                                          "autodns",
+                                          "aws",
+                                          "azion",
+                                          "azure",
+                                          "bookmyname",
+                                          "bunny",
+                                          "cf",
+                                          "clouddns",
+                                          "cloudns",
+                                          "cn",
+                                          "conoha",
+                                          "constellix",
+                                          "cpanel",
+                                          "curanet",
+                                          "cyon",
+                                          "da",
+                                          "ddnss",
+                                          "desec",
+                                          "df",
+                                          "dgon",
+                                          "dnsexit",
+                                          "dnshome",
+                                          "dnsimple",
+                                          "dnsservices",
+                                          "do",
+                                          "doapi",
+                                          "domeneshop",
+                                          "dp",
+                                          "dpi",
+                                          "dreamhost",
+                                          "duckdns",
+                                          "durabledns",
+                                          "dyn",
+                                          "dynu",
+                                          "dynv6",
+                                          "easydns",
+                                          "edgedns",
+                                          "euserv",
+                                          "exoscale",
+                                          "fornex",
+                                          "freedns",
+                                          "gandi_livedns",
+                                          "gcloud",
+                                          "gcore",
+                                          "gd",
+                                          "geoscaling",
+                                          "googledomains",
+                                          "he",
+                                          "hetzner",
+                                          "hexonet",
+                                          "hostingde",
+                                          "huaweicloud",
+                                          "infoblox",
+                                          "infomaniak",
+                                          "internetbs",
+                                          "inwx",
+                                          "ionos",
+                                          "ipv64",
+                                          "ispconfig",
+                                          "jd",
+                                          "joker",
+                                          "kappernet",
+                                          "kas",
+                                          "kinghost",
+                                          "knot",
+                                          "la",
+                                          "leaseweb",
+                                          "lexicon",
+                                          "linode",
+                                          "linode_v4",
+                                          "loopia",
+                                          "lua",
+                                          "maradns",
+                                          "me",
+                                          "miab",
+                                          "misaka",
+                                          "myapi",
+                                          "mydevil",
+                                          "mydnsjp",
+                                          "mythic_beasts",
+                                          "namecheap",
+                                          "namecom",
+                                          "namesilo",
+                                          "nanelo",
+                                          "nederhost",
+                                          "neodigit",
+                                          "netcup",
+                                          "netlify",
+                                          "nic",
+                                          "njalla",
+                                          "nm",
+                                          "nsd",
+                                          "nsone",
+                                          "nsupdate",
+                                          "nw",
+                                          "oci",
+                                          "one",
+                                          "online",
+                                          "openprovider",
+                                          "openstack",
+                                          "opnsense",
+                                          "ovh",
+                                          "pdns",
+                                          "pleskxml",
+                                          "pointhq",
+                                          "porkbun",
+                                          "rackcorp",
+                                          "rackspace",
+                                          "rage4",
+                                          "rcode0",
+                                          "regru",
+                                          "scaleway",
+                                          "schlundtech",
+                                          "selectel",
+                                          "selfhost",
+                                          "servercow",
+                                          "simply",
+                                          "tele3",
+                                          "tencent",
+                                          "transip",
+                                          "udr",
+                                          "ultra",
+                                          "unoeuro",
+                                          "variomedia",
+                                          "veesp",
+                                          "vercel",
+                                          "vscale",
+                                          "vultr",
+                                          "websupport",
+                                          "world4you",
+                                          "yandex",
+                                          "yc",
+                                          "zilore",
+                                          "zone",
+                                          "zonomi"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "type" : {
-                                       "description" : "The type of the resources.",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "allowtoken" : 1,
-                              "description" : "Update resource configuration.",
-                              "method" : "PUT",
-                              "name" : "update",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "maxLength" : 4096,
+                                    "data" : {
+                                       "description" : "DNS plugin data. (base64 encoded)",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -4510,54 +7421,39 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
-                                       "format" : "pve-configid",
+                                    "disable" : {
+                                       "description" : "Flag to disable the config.",
                                        "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "id" : {
+                                       "description" : "ACME Plugin ID name",
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "max_relocate" : {
-                                       "default" : 1,
-                                       "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                       "minimum" : 0,
+                                    "nodes" : {
+                                       "description" : "List of cluster node names.",
+                                       "format" : "pve-node-list",
                                        "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "max_restart" : {
-                                       "default" : 1,
-                                       "description" : "Maximal number of tries to restart the service on a node after its start failed.",
+                                    "validation-delay" : {
+                                       "default" : 30,
+                                       "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
+                                       "maximum" : 172800,
                                        "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
-                                    },
-                                    "sid" : {
-                                       "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                       "format" : "pve-ha-resource-or-vm-id",
-                                       "type" : "string",
-                                       "typetext" : "<type>:<name>"
-                                    },
-                                    "state" : {
-                                       "default" : "started",
-                                       "description" : "Requested resource state.",
-                                       "enum" : [
-                                          "started",
-                                          "stopped",
-                                          "enabled",
-                                          "disabled",
-                                          "ignored"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                                       "typetext" : "<integer> (0 - 172800)"
                                     }
                                  },
                                  "type" : "object"
@@ -4567,7 +7463,7 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Console"
+                                       "Sys.Modify"
                                     ]
                                  ]
                               },
@@ -4577,25 +7473,25 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 0,
-                        "path" : "/cluster/ha/resources/{sid}",
-                        "text" : "{sid}"
+                        "leaf" : 1,
+                        "path" : "/cluster/acme/plugins/{id}",
+                        "text" : "{id}"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "List HA resources.",
+                        "description" : "ACME plugin index.",
                         "method" : "GET",
                         "name" : "index",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
                               "type" : {
-                                 "description" : "Only list resources of specific type",
+                                 "description" : "Only list ACME plugins of a specific type",
                                  "enum" : [
-                                    "ct",
-                                    "vm"
+                                    "dns",
+                                    "standalone"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -4607,14 +7503,17 @@ const apiSchema = [
                               "perm",
                               "/",
                               [
-                                 "Sys.Audit"
+                                 "Sys.Modify"
                               ]
                            ]
                         },
+                        "protected" : 1,
                         "returns" : {
                            "items" : {
                               "properties" : {
-                                 "sid" : {
+                                 "plugin" : {
+                                    "description" : "Unique identifier for ACME plugin instance.",
+                                    "format" : "pve-configid",
                                     "type" : "string"
                                  }
                               },
@@ -4622,7 +7521,7 @@ const apiSchema = [
                            },
                            "links" : [
                               {
-                                 "href" : "{sid}",
+                                 "href" : "{plugin}",
                                  "rel" : "child"
                               }
                            ],
@@ -4631,70 +7530,205 @@ const apiSchema = [
                      },
                      "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Create a new HA resource.",
+                        "description" : "Add ACME plugin configuration.",
                         "method" : "POST",
-                        "name" : "create",
+                        "name" : "add_plugin",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
+                              "api" : {
+                                 "description" : "API plugin name",
+                                 "enum" : [
+                                    "1984hosting",
+                                    "acmedns",
+                                    "acmeproxy",
+                                    "active24",
+                                    "ad",
+                                    "ali",
+                                    "anx",
+                                    "artfiles",
+                                    "arvan",
+                                    "aurora",
+                                    "autodns",
+                                    "aws",
+                                    "azion",
+                                    "azure",
+                                    "bookmyname",
+                                    "bunny",
+                                    "cf",
+                                    "clouddns",
+                                    "cloudns",
+                                    "cn",
+                                    "conoha",
+                                    "constellix",
+                                    "cpanel",
+                                    "curanet",
+                                    "cyon",
+                                    "da",
+                                    "ddnss",
+                                    "desec",
+                                    "df",
+                                    "dgon",
+                                    "dnsexit",
+                                    "dnshome",
+                                    "dnsimple",
+                                    "dnsservices",
+                                    "do",
+                                    "doapi",
+                                    "domeneshop",
+                                    "dp",
+                                    "dpi",
+                                    "dreamhost",
+                                    "duckdns",
+                                    "durabledns",
+                                    "dyn",
+                                    "dynu",
+                                    "dynv6",
+                                    "easydns",
+                                    "edgedns",
+                                    "euserv",
+                                    "exoscale",
+                                    "fornex",
+                                    "freedns",
+                                    "gandi_livedns",
+                                    "gcloud",
+                                    "gcore",
+                                    "gd",
+                                    "geoscaling",
+                                    "googledomains",
+                                    "he",
+                                    "hetzner",
+                                    "hexonet",
+                                    "hostingde",
+                                    "huaweicloud",
+                                    "infoblox",
+                                    "infomaniak",
+                                    "internetbs",
+                                    "inwx",
+                                    "ionos",
+                                    "ipv64",
+                                    "ispconfig",
+                                    "jd",
+                                    "joker",
+                                    "kappernet",
+                                    "kas",
+                                    "kinghost",
+                                    "knot",
+                                    "la",
+                                    "leaseweb",
+                                    "lexicon",
+                                    "linode",
+                                    "linode_v4",
+                                    "loopia",
+                                    "lua",
+                                    "maradns",
+                                    "me",
+                                    "miab",
+                                    "misaka",
+                                    "myapi",
+                                    "mydevil",
+                                    "mydnsjp",
+                                    "mythic_beasts",
+                                    "namecheap",
+                                    "namecom",
+                                    "namesilo",
+                                    "nanelo",
+                                    "nederhost",
+                                    "neodigit",
+                                    "netcup",
+                                    "netlify",
+                                    "nic",
+                                    "njalla",
+                                    "nm",
+                                    "nsd",
+                                    "nsone",
+                                    "nsupdate",
+                                    "nw",
+                                    "oci",
+                                    "one",
+                                    "online",
+                                    "openprovider",
+                                    "openstack",
+                                    "opnsense",
+                                    "ovh",
+                                    "pdns",
+                                    "pleskxml",
+                                    "pointhq",
+                                    "porkbun",
+                                    "rackcorp",
+                                    "rackspace",
+                                    "rage4",
+                                    "rcode0",
+                                    "regru",
+                                    "scaleway",
+                                    "schlundtech",
+                                    "selectel",
+                                    "selfhost",
+                                    "servercow",
+                                    "simply",
+                                    "tele3",
+                                    "tencent",
+                                    "transip",
+                                    "udr",
+                                    "ultra",
+                                    "unoeuro",
+                                    "variomedia",
+                                    "veesp",
+                                    "vercel",
+                                    "vscale",
+                                    "vultr",
+                                    "websupport",
+                                    "world4you",
+                                    "yandex",
+                                    "yc",
+                                    "zilore",
+                                    "zone",
+                                    "zonomi"
+                                 ],
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "string"
                               },
-                              "group" : {
-                                 "description" : "The HA group identifier.",
-                                 "format" : "pve-configid",
+                              "data" : {
+                                 "description" : "DNS plugin data. (base64 encoded)",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "max_relocate" : {
-                                 "default" : 1,
-                                 "description" : "Maximal number of service relocate tries when a service failes to start.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "max_restart" : {
-                                 "default" : 1,
-                                 "description" : "Maximal number of tries to restart the service on a node after its start failed.",
-                                 "minimum" : 0,
+                              "disable" : {
+                                 "description" : "Flag to disable the config.",
                                  "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "sid" : {
-                                 "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).",
-                                 "format" : "pve-ha-resource-or-vm-id",
+                              "id" : {
+                                 "description" : "ACME Plugin ID name",
+                                 "format" : "pve-configid",
                                  "type" : "string",
-                                 "typetext" : "<type>:<name>"
+                                 "typetext" : "<string>"
                               },
-                              "state" : {
-                                 "default" : "started",
-                                 "description" : "Requested resource state.",
-                                 "enum" : [
-                                    "started",
-                                    "stopped",
-                                    "enabled",
-                                    "disabled",
-                                    "ignored"
-                                 ],
+                              "nodes" : {
+                                 "description" : "List of cluster node names.",
+                                 "format" : "pve-node-list",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "verbose_description" : "Requested resource state. The CRM reads this state and acts accordingly.\nPlease note that `enabled` is just an alias for `started`.\n\n`started`;;\n\nThe CRM tries to start the resource. Service state is\nset to `started` after successful start. On node failures, or when start\nfails, it tries to recover the resource.  If everything fails, service\nstate it set to `error`.\n\n`stopped`;;\n\nThe CRM tries to keep the resource in `stopped` state, but it\nstill tries to relocate the resources on node failures.\n\n`disabled`;;\n\nThe CRM tries to put the resource in `stopped` state, but does not try\nto relocate the resources on node failures. The main purpose of this\nstate is error recovery, because it is the only way to move a resource out\nof the `error` state.\n\n`ignored`;;\n\nThe resource gets removed from the manager status and so the CRM and the LRM do\nnot touch the resource anymore. All {pve} API calls affecting this resource\nwill be executed, directly bypassing the HA stack. CRM commands will be thrown\naway while there source is in this state. The resource will not get relocated\non node failures.\n\n"
+                                 "typetext" : "<string>"
                               },
                               "type" : {
-                                 "description" : "Resource type.",
+                                 "description" : "ACME challenge type.",
                                  "enum" : [
-                                    "ct",
-                                    "vm"
+                                    "dns",
+                                    "standalone"
                                  ],
-                                 "optional" : 1,
                                  "type" : "string"
+                              },
+                              "validation-delay" : {
+                                 "default" : 30,
+                                 "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
+                                 "maximum" : 172800,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 172800)"
                               }
                            },
                            "type" : "object"
@@ -4704,7 +7738,7 @@ const apiSchema = [
                               "perm",
                               "/",
                               [
-                                 "Sys.Console"
+                                 "Sys.Modify"
                               ]
                            ]
                         },
@@ -4715,8 +7749,8 @@ const apiSchema = [
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/ha/resources",
-                  "text" : "resources"
+                  "path" : "/cluster/acme/plugins",
+                  "text" : "plugins"
                },
                {
                   "children" : [
@@ -4724,173 +7758,132 @@ const apiSchema = [
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Delete ha group configuration.",
+                              "description" : "Deactivate existing ACME account at CA.",
                               "method" : "DELETE",
-                              "name" : "delete",
+                              "name" : "deactivate_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
                                        "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<name>"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
-                              },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "string"
                               }
                            },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Read ha group configuration.",
+                              "description" : "Return existing ACME account information.",
                               "method" : "GET",
-                              "name" : "read",
+                              "name" : "get_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
                                        "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<name>"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {}
+                              "protected" : 1,
+                              "returns" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "account" : {
+                                       "optional" : 1,
+                                       "renderer" : "yaml",
+                                       "type" : "object"
+                                    },
+                                    "directory" : {
+                                       "description" : "URL of ACME CA directory endpoint.",
+                                       "optional" : 1,
+                                       "pattern" : "^https?://.*",
+                                       "type" : "string"
+                                    },
+                                    "location" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "tos" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
                            },
                            "PUT" : {
                               "allowtoken" : 1,
-                              "description" : "Update ha group configuration.",
+                              "description" : "Update existing ACME account information with CA. Note: not specifying any new account information triggers a refresh.",
                               "method" : "PUT",
-                              "name" : "update",
+                              "name" : "update_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "comment" : {
-                                       "description" : "Description.",
-                                       "maxLength" : 4096,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "maxLength" : 4096,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                    "contact" : {
+                                       "description" : "Contact email addresses.",
+                                       "format" : "email-list",
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "group" : {
-                                       "description" : "The HA group identifier.",
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
                                        "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nodes" : {
-                                       "description" : "List of cluster node names with optional priority.",
-                                       "format" : "pve-ha-group-node-list",
+                                       "format_description" : "name",
                                        "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
-                                       "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
-                                    },
-                                    "nofailback" : {
-                                       "default" : 0,
-                                       "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "restricted" : {
-                                       "default" : 0,
-                                       "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>",
-                                       "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
-                                    }
-                                 },
-                                 "type" : "object"
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Console"
-                                    ]
-                                 ]
+                                       "typetext" : "<name>"
+                                    }
+                                 }
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "string"
                               }
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/cluster/ha/groups/{group}",
-                        "text" : "{group}"
+                        "path" : "/cluster/acme/account/{name}",
+                        "text" : "{name}"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get HA groups.",
+                        "description" : "ACMEAccount index.",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "account_index",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
+                           "user" : "all"
                         },
+                        "protected" : 1,
                         "returns" : {
                            "items" : {
-                              "properties" : {
-                                 "group" : {
-                                    "type" : "string"
-                                 }
-                              },
+                              "properties" : {},
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{group}",
+                                 "href" : "{name}",
                                  "rel" : "child"
                               }
                            ],
@@ -4899,259 +7892,600 @@ const apiSchema = [
                      },
                      "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Create a new HA group.",
+                        "description" : "Register a new ACME account with CA.",
                         "method" : "POST",
-                        "name" : "create",
+                        "name" : "register_account",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "comment" : {
-                                 "description" : "Description.",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
+                              "contact" : {
+                                 "description" : "Contact email addresses.",
+                                 "format" : "email-list",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "group" : {
-                                 "description" : "The HA group identifier.",
-                                 "format" : "pve-configid",
+                              "directory" : {
+                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                                 "description" : "URL of ACME CA directory endpoint.",
+                                 "optional" : 1,
+                                 "pattern" : "^https?://.*",
+                                 "type" : "string"
+                              },
+                              "eab-hmac-key" : {
+                                 "description" : "HMAC key for External Account Binding.",
+                                 "optional" : 1,
+                                 "requires" : "eab-kid",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "nodes" : {
-                                 "description" : "List of cluster node names with optional priority.",
-                                 "format" : "pve-ha-group-node-list",
-                                 "optional" : 0,
+                              "eab-kid" : {
+                                 "description" : "Key Identifier for External Account Binding.",
+                                 "optional" : 1,
+                                 "requires" : "eab-hmac-key",
                                  "type" : "string",
-                                 "typetext" : "<node>[:<pri>]{,<node>[:<pri>]}*",
-                                 "verbose_description" : "List of cluster node members, where a priority can be given to each node. A resource bound to a group will run on the available nodes with the highest priority. If there are more nodes in the highest priority class, the services will get distributed to those nodes. The priorities have a relative meaning only."
+                                 "typetext" : "<string>"
                               },
-                              "nofailback" : {
-                                 "default" : 0,
-                                 "description" : "The CRM tries to run services on the node with the highest priority. If a node with higher priority comes online, the CRM migrates the service to that node. Enabling nofailback prevents that behavior.",
+                              "name" : {
+                                 "default" : "default",
+                                 "description" : "ACME account config file name.",
+                                 "format" : "pve-configid",
+                                 "format_description" : "name",
                                  "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                                 "type" : "string",
+                                 "typetext" : "<name>"
                               },
-                              "restricted" : {
-                                 "default" : 0,
-                                 "description" : "Resources bound to restricted groups may only run on nodes defined by the group.",
+                              "tos_url" : {
+                                 "description" : "URL of CA TermsOfService - setting this indicates agreement.",
                                  "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>",
-                                 "verbose_description" : "Resources bound to restricted groups may only run on nodes defined by the group. The resource will be placed in the stopped state if no group node member is online. Resources on unrestricted groups may run on any cluster node if all group members are offline, but they will migrate back as soon as a group member comes online. One can implement a 'preferred node' behavior using an unrestricted group with only one member."
-                              },
-                              "type" : {
-                                 "description" : "Group type.",
-                                 "enum" : [
-                                    "group"
-                                 ],
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/acme/account",
+                  "text" : "account"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Retrieve ACME TermsOfService URL from CA. Deprecated, please use /cluster/acme/meta.",
+                        "method" : "GET",
+                        "name" : "get_tos",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "directory" : {
+                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                                 "description" : "URL of ACME CA directory endpoint.",
                                  "optional" : 1,
+                                 "pattern" : "^https?://.*",
                                  "type" : "string"
                               }
-                           },
-                           "type" : "object"
+                           }
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "description" : "ACME TermsOfService URL.",
+                           "optional" : 1,
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/acme/tos",
+                  "text" : "tos"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Retrieve ACME Directory Meta Information",
+                        "method" : "GET",
+                        "name" : "get_meta",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "directory" : {
+                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                                 "description" : "URL of ACME CA directory endpoint.",
+                                 "optional" : 1,
+                                 "pattern" : "^https?://.*",
+                                 "type" : "string"
+                              }
+                           }
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/",
+                              "/nodes/{node}",
                               [
-                                 "Sys.Console"
+                                 "Sys.Audit"
                               ]
                            ]
                         },
-                        "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "additionalProperties" : 1,
+                           "properties" : {
+                              "caaIdentities" : {
+                                 "description" : "Hostnames referring to the ACME servers.",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array"
+                              },
+                              "externalAccountRequired" : {
+                                 "description" : "EAB Required",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "termsOfService" : {
+                                 "description" : "ACME TermsOfService URL.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "website" : {
+                                 "description" : "URL to more information about the ACME server.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/cluster/ha/groups",
-                  "text" : "groups"
+                  "leaf" : 1,
+                  "path" : "/cluster/acme/meta",
+                  "text" : "meta"
                },
                {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get HA manger status.",
-                              "method" : "GET",
-                              "name" : "status",
-                              "parameters" : {
-                                 "additionalProperties" : 0
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get named known ACME directory endpoints.",
+                        "method" : "GET",
+                        "name" : "get_directories",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "additionalProperties" : 0,
+                              "properties" : {
+                                 "name" : {
+                                    "type" : "string"
+                                 },
+                                 "url" : {
+                                    "description" : "URL of ACME CA directory endpoint.",
+                                    "pattern" : "^https?://.*",
+                                    "type" : "string"
+                                 }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/acme/directories",
+                  "text" : "directories"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get schema of ACME challenge types.",
+                        "method" : "GET",
+                        "name" : "challengeschema",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "additionalProperties" : 0,
+                              "properties" : {
+                                 "id" : {
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "Human readable name, falls back to id",
+                                    "type" : "string"
+                                 },
+                                 "schema" : {
+                                    "type" : "object"
+                                 },
+                                 "type" : {
+                                    "type" : "string"
+                                 }
                               },
-                              "returns" : {
-                                 "type" : "array"
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/acme/challenge-schema",
+                  "text" : "challenge-schema"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "ACMEAccount index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/acme",
+            "text" : "acme"
+         },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get ceph metadata.",
+                        "method" : "GET",
+                        "name" : "metadata",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "scope" : {
+                                 "default" : "all",
+                                 "enum" : [
+                                    "all",
+                                    "versions"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/cluster/ha/status/current",
-                        "text" : "current"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get full HA manger status, including LRM status.",
-                              "method" : "GET",
-                              "name" : "manager_status",
-                              "parameters" : {
-                                 "additionalProperties" : 0
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit",
+                                 "Datastore.Audit"
+                              ],
+                              "any",
+                              1
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "description" : "Items for each type of service containing objects for each instance.",
+                           "properties" : {
+                              "mds" : {
+                                 "description" : "Metadata servers configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addr" : {
+                                             "description" : "Bind addresses and ports.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
+                              "mgr" : {
+                                 "description" : "Managers configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addr" : {
+                                             "description" : "Bind address",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
                               },
-                              "returns" : {
+                              "mon" : {
+                                 "description" : "Monitors configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addrs" : {
+                                             "description" : "Bind addresses and ports.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "node" : {
+                                 "description" : "Ceph version installed on the nodes.",
+                                 "properties" : {
+                                    "{node}" : {
+                                       "properties" : {
+                                          "buildcommit" : {
+                                             "description" : "GIT commit used for the build.",
+                                             "type" : "string"
+                                          },
+                                          "version" : {
+                                             "description" : "Version info.",
+                                             "properties" : {
+                                                "parts" : {
+                                                   "description" : "major, minor & patch",
+                                                   "type" : "array"
+                                                },
+                                                "str" : {
+                                                   "description" : "Version as single string.",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
                                  "type" : "object"
+                              },
+                              "osd" : {
+                                 "description" : "OSDs configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "back_addr" : {
+                                             "description" : "Bind addresses and ports for backend inter OSD traffic.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "device_id" : {
+                                             "description" : "Devices used by the OSD.",
+                                             "type" : "string"
+                                          },
+                                          "front_addr" : {
+                                             "description" : "Bind addresses and ports for frontend traffic to OSDs.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "id" : {
+                                             "description" : "OSD ID.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "osd_data" : {
+                                             "description" : "Path to the OSD data directory.",
+                                             "type" : "string"
+                                          },
+                                          "osd_objectstore" : {
+                                             "description" : "OSD objectstore type.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "array"
                               }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/ha/status/manager_status",
-                        "text" : "manager_status"
+                           },
+                           "type" : "object"
+                        }
                      }
-                  ],
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/ceph/metadata",
+                  "text" : "metadata"
+               },
+               {
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Directory index.",
+                        "description" : "Get ceph status.",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "status",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "user" : "all"
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit",
+                                 "Datastore.Audit"
+                              ],
+                              "any",
+                              1
+                           ]
                         },
+                        "protected" : 1,
                         "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
+                           "type" : "object"
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/cluster/ha/status",
+                  "leaf" : 1,
+                  "path" : "/cluster/ceph/status",
                   "text" : "status"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "perm",
-                        "/",
-                        [
-                           "Sys.Audit"
-                        ]
-                     ]
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {
-                           "id" : {
-                              "type" : "string"
-                           }
-                        },
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{id}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/ha",
-            "text" : "ha"
-         },
-         {
-            "children" : [
+               },
                {
                   "children" : [
                      {
                         "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Delete ACME plugin configuration.",
-                              "method" : "DELETE",
-                              "name" : "delete_plugin",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "id" : {
-                                       "description" : "Unique identifier for ACME plugin instance.",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get ACME plugin configuration.",
+                              "description" : "Get the status of a specific ceph flag.",
                               "method" : "GET",
-                              "name" : "get_plugin_config",
+                              "name" : "get_flag",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "id" : {
-                                       "description" : "Unique identifier for ACME plugin instance.",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "flag" : {
+                                       "description" : "The name of the flag name to get.",
+                                       "enum" : [
+                                          "nobackfill",
+                                          "nodeep-scrub",
+                                          "nodown",
+                                          "noin",
+                                          "noout",
+                                          "norebalance",
+                                          "norecover",
+                                          "noscrub",
+                                          "notieragent",
+                                          "noup",
+                                          "pause"
+                                       ],
+                                       "type" : "string"
                                     }
                                  }
                               },
@@ -5160,206 +8494,46 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify"
+                                       "Sys.Audit"
                                     ]
                                  ]
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "object"
+                                 "type" : "boolean"
                               }
                            },
                            "PUT" : {
                               "allowtoken" : 1,
-                              "description" : "Update ACME plugin configuration.",
+                              "description" : "Set or clear (unset) a specific ceph flag",
                               "method" : "PUT",
-                              "name" : "update_plugin",
+                              "name" : "update_flag",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "api" : {
-                                       "description" : "API plugin name",
+                                    "flag" : {
+                                       "description" : "The ceph flag to update",
                                        "enum" : [
-                                          "1984hosting",
-                                          "acmedns",
-                                          "acmeproxy",
-                                          "active24",
-                                          "ad",
-                                          "ali",
-                                          "anx",
-                                          "arvan",
-                                          "aurora",
-                                          "autodns",
-                                          "aws",
-                                          "azion",
-                                          "azure",
-                                          "cf",
-                                          "clouddns",
-                                          "cloudns",
-                                          "cn",
-                                          "conoha",
-                                          "constellix",
-                                          "cx",
-                                          "cyon",
-                                          "da",
-                                          "ddnss",
-                                          "desec",
-                                          "df",
-                                          "dgon",
-                                          "dnsimple",
-                                          "do",
-                                          "doapi",
-                                          "domeneshop",
-                                          "dp",
-                                          "dpi",
-                                          "dreamhost",
-                                          "duckdns",
-                                          "durabledns",
-                                          "dyn",
-                                          "dynu",
-                                          "dynv6",
-                                          "easydns",
-                                          "edgedns",
-                                          "euserv",
-                                          "exoscale",
-                                          "freedns",
-                                          "gandi_livedns",
-                                          "gcloud",
-                                          "gd",
-                                          "gdnsdk",
-                                          "he",
-                                          "hetzner",
-                                          "hexonet",
-                                          "hostingde",
-                                          "huaweicloud",
-                                          "infoblox",
-                                          "infomaniak",
-                                          "internetbs",
-                                          "inwx",
-                                          "ionos",
-                                          "ispconfig",
-                                          "jd",
-                                          "joker",
-                                          "kappernet",
-                                          "kas",
-                                          "kinghost",
-                                          "knot",
-                                          "leaseweb",
-                                          "lexicon",
-                                          "linode",
-                                          "linode_v4",
-                                          "loopia",
-                                          "lua",
-                                          "maradns",
-                                          "me",
-                                          "miab",
-                                          "misaka",
-                                          "myapi",
-                                          "mydevil",
-                                          "mydnsjp",
-                                          "namecheap",
-                                          "namecom",
-                                          "namesilo",
-                                          "nederhost",
-                                          "neodigit",
-                                          "netcup",
-                                          "netlify",
-                                          "nic",
-                                          "njalla",
-                                          "nm",
-                                          "nsd",
-                                          "nsone",
-                                          "nsupdate",
-                                          "nw",
-                                          "oci",
-                                          "one",
-                                          "online",
-                                          "openprovider",
-                                          "openstack",
-                                          "opnsense",
-                                          "ovh",
-                                          "pdns",
-                                          "pleskxml",
-                                          "pointhq",
-                                          "porkbun",
-                                          "rackcorp",
-                                          "rackspace",
-                                          "rcode0",
-                                          "regru",
-                                          "scaleway",
-                                          "schlundtech",
-                                          "selectel",
-                                          "servercow",
-                                          "simply",
-                                          "tele3",
-                                          "transip",
-                                          "ultra",
-                                          "unoeuro",
-                                          "variomedia",
-                                          "veesp",
-                                          "vscale",
-                                          "vultr",
-                                          "websupport",
-                                          "world4you",
-                                          "yandex",
-                                          "zilore",
-                                          "zone",
-                                          "zonomi"
+                                          "nobackfill",
+                                          "nodeep-scrub",
+                                          "nodown",
+                                          "noin",
+                                          "noout",
+                                          "norebalance",
+                                          "norecover",
+                                          "noscrub",
+                                          "notieragent",
+                                          "noup",
+                                          "pause"
                                        ],
-                                       "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "data" : {
-                                       "description" : "DNS plugin data. (base64 encoded)",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "maxLength" : 4096,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "disable" : {
-                                       "description" : "Flag to disable the config.",
-                                       "optional" : 1,
+                                    "value" : {
+                                       "description" : "The new value of the flag",
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
-                                    },
-                                    "id" : {
-                                       "description" : "ACME Plugin ID name",
-                                       "format" : "pve-configid",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "nodes" : {
-                                       "description" : "List of cluster node names.",
-                                       "format" : "pve-node-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "validation-delay" : {
-                                       "default" : 30,
-                                       "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
-                                       "maximum" : 172800,
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - 172800)"
                                     }
-                                 },
-                                 "type" : "object"
+                                 }
                               },
                               "permissions" : {
                                  "check" : [
@@ -5374,247 +8548,148 @@ const apiSchema = [
                               "returns" : {
                                  "type" : "null"
                               }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/cluster/acme/plugins/{id}",
-                        "text" : "{id}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "ACME plugin index.",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "type" : {
-                                 "description" : "Only list ACME plugins of a specific type",
-                                 "enum" : [
-                                    "dns",
-                                    "standalone"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "plugin" : {
-                                    "description" : "Unique identifier for ACME plugin instance.",
-                                    "format" : "pve-configid",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{plugin}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Add ACME plugin configuration.",
-                        "method" : "POST",
-                        "name" : "add_plugin",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "api" : {
-                                 "description" : "API plugin name",
-                                 "enum" : [
-                                    "1984hosting",
-                                    "acmedns",
-                                    "acmeproxy",
-                                    "active24",
-                                    "ad",
-                                    "ali",
-                                    "anx",
-                                    "arvan",
-                                    "aurora",
-                                    "autodns",
-                                    "aws",
-                                    "azion",
-                                    "azure",
-                                    "cf",
-                                    "clouddns",
-                                    "cloudns",
-                                    "cn",
-                                    "conoha",
-                                    "constellix",
-                                    "cx",
-                                    "cyon",
-                                    "da",
-                                    "ddnss",
-                                    "desec",
-                                    "df",
-                                    "dgon",
-                                    "dnsimple",
-                                    "do",
-                                    "doapi",
-                                    "domeneshop",
-                                    "dp",
-                                    "dpi",
-                                    "dreamhost",
-                                    "duckdns",
-                                    "durabledns",
-                                    "dyn",
-                                    "dynu",
-                                    "dynv6",
-                                    "easydns",
-                                    "edgedns",
-                                    "euserv",
-                                    "exoscale",
-                                    "freedns",
-                                    "gandi_livedns",
-                                    "gcloud",
-                                    "gd",
-                                    "gdnsdk",
-                                    "he",
-                                    "hetzner",
-                                    "hexonet",
-                                    "hostingde",
-                                    "huaweicloud",
-                                    "infoblox",
-                                    "infomaniak",
-                                    "internetbs",
-                                    "inwx",
-                                    "ionos",
-                                    "ispconfig",
-                                    "jd",
-                                    "joker",
-                                    "kappernet",
-                                    "kas",
-                                    "kinghost",
-                                    "knot",
-                                    "leaseweb",
-                                    "lexicon",
-                                    "linode",
-                                    "linode_v4",
-                                    "loopia",
-                                    "lua",
-                                    "maradns",
-                                    "me",
-                                    "miab",
-                                    "misaka",
-                                    "myapi",
-                                    "mydevil",
-                                    "mydnsjp",
-                                    "namecheap",
-                                    "namecom",
-                                    "namesilo",
-                                    "nederhost",
-                                    "neodigit",
-                                    "netcup",
-                                    "netlify",
-                                    "nic",
-                                    "njalla",
-                                    "nm",
-                                    "nsd",
-                                    "nsone",
-                                    "nsupdate",
-                                    "nw",
-                                    "oci",
-                                    "one",
-                                    "online",
-                                    "openprovider",
-                                    "openstack",
-                                    "opnsense",
-                                    "ovh",
-                                    "pdns",
-                                    "pleskxml",
-                                    "pointhq",
-                                    "porkbun",
-                                    "rackcorp",
-                                    "rackspace",
-                                    "rcode0",
-                                    "regru",
-                                    "scaleway",
-                                    "schlundtech",
-                                    "selectel",
-                                    "servercow",
-                                    "simply",
-                                    "tele3",
-                                    "transip",
-                                    "ultra",
-                                    "unoeuro",
-                                    "variomedia",
-                                    "veesp",
-                                    "vscale",
-                                    "vultr",
-                                    "websupport",
-                                    "world4you",
-                                    "yandex",
-                                    "zilore",
-                                    "zone",
-                                    "zonomi"
-                                 ],
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/ceph/flags/{flag}",
+                        "text" : "{flag}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "get the status of all ceph flags",
+                        "method" : "GET",
+                        "name" : "get_all_flags",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "items" : {
+                              "additionalProperties" : 1,
+                              "properties" : {
+                                 "description" : {
+                                    "description" : "Flag description.",
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "Flag name.",
+                                    "enum" : [
+                                       "nobackfill",
+                                       "nodeep-scrub",
+                                       "nodown",
+                                       "noin",
+                                       "noout",
+                                       "norebalance",
+                                       "norecover",
+                                       "noscrub",
+                                       "notieragent",
+                                       "noup",
+                                       "pause"
+                                    ],
+                                    "type" : "string"
+                                 },
+                                 "value" : {
+                                    "description" : "Flag value.",
+                                    "type" : "boolean"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Set/Unset multiple ceph flags at once.",
+                        "method" : "PUT",
+                        "name" : "set_flags",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "nobackfill" : {
+                                 "description" : "Backfilling of PGs is suspended.",
                                  "optional" : 1,
-                                 "type" : "string"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "data" : {
-                                 "description" : "DNS plugin data. (base64 encoded)",
+                              "nodeep-scrub" : {
+                                 "description" : "Deep Scrubbing is disabled.",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "disable" : {
-                                 "description" : "Flag to disable the config.",
+                              "nodown" : {
+                                 "description" : "OSD failure reports are being ignored, such that the monitors will not mark OSDs down.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
-                              "id" : {
-                                 "description" : "ACME Plugin ID name",
-                                 "format" : "pve-configid",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "noin" : {
+                                 "description" : "OSDs that were previously marked out will not be marked back in when they start.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "nodes" : {
-                                 "description" : "List of cluster node names.",
-                                 "format" : "pve-node-list",
+                              "noout" : {
+                                 "description" : "OSDs will not automatically be marked out after the configured interval.",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "type" : {
-                                 "description" : "ACME challenge type.",
-                                 "enum" : [
-                                    "dns",
-                                    "standalone"
-                                 ],
-                                 "type" : "string"
+                              "norebalance" : {
+                                 "description" : "Rebalancing of PGs is suspended.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "validation-delay" : {
-                                 "default" : 30,
-                                 "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
-                                 "maximum" : 172800,
-                                 "minimum" : 0,
+                              "norecover" : {
+                                 "description" : "Recovery of PGs is suspended.",
                                  "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 172800)"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "noscrub" : {
+                                 "description" : "Scrubbing is disabled.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "notieragent" : {
+                                 "description" : "Cache tiering activity is suspended.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "noup" : {
+                                 "description" : "OSDs are not allowed to start.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "pause" : {
+                                 "description" : "Pauses read and writes.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               }
-                           },
-                           "type" : "object"
+                           }
                         },
                         "permissions" : {
                            "check" : [
@@ -5627,297 +8702,445 @@ const apiSchema = [
                         },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "null"
+                           "type" : "string"
                         }
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/acme/plugins",
-                  "text" : "plugins"
-               },
+                  "path" : "/cluster/ceph/flags",
+                  "text" : "flags"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Cluster ceph index.",
+                  "method" : "GET",
+                  "name" : "cephindex",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/ceph",
+            "text" : "ceph"
+         },
+         {
+            "children" : [
                {
                   "children" : [
                      {
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
-                              "description" : "Deactivate existing ACME account at CA.",
+                              "description" : "Delete realm-sync job definition.",
                               "method" : "DELETE",
-                              "name" : "deactivate_account",
+                              "name" : "delete_job",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
+                                    "id" : {
                                        "format" : "pve-configid",
-                                       "format_description" : "name",
-                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<name>"
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "string"
+                                 "type" : "null"
                               }
                            },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Return existing ACME account information.",
+                              "description" : "Read realm-sync job definition.",
                               "method" : "GET",
-                              "name" : "get_account",
+                              "name" : "read_job",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
+                                    "id" : {
                                        "format" : "pve-configid",
-                                       "format_description" : "name",
-                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<name>"
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
-                              "protected" : 1,
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
                               "returns" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create new realm-sync job.",
+                              "method" : "POST",
+                              "name" : "create_job",
+                              "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "account" : {
+                                    "comment" : {
+                                       "description" : "Description for the Job.",
+                                       "maxLength" : 512,
                                        "optional" : 1,
-                                       "renderer" : "yaml",
-                                       "type" : "object"
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "directory" : {
-                                       "description" : "URL of ACME CA directory endpoint.",
+                                    "enable-new" : {
+                                       "default" : "1",
+                                       "description" : "Enable newly synced users immediately.",
                                        "optional" : 1,
-                                       "pattern" : "^https?://.*",
-                                       "type" : "string"
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "location" : {
+                                    "enabled" : {
+                                       "default" : 1,
+                                       "description" : "Determines if the job is enabled.",
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "tos" : {
+                                    "id" : {
+                                       "description" : "The ID of the job.",
+                                       "format" : "pve-configid",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "realm" : {
+                                       "description" : "Authentication domain ID",
+                                       "format" : "pve-realm",
+                                       "maxLength" : 32,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "remove-vanished" : {
+                                       "default" : "none",
+                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync. Instead of a list it also can be 'none' (the default).",
+                                       "optional" : 1,
+                                       "pattern" : "(?:(?:(?:acl|properties|entry);)*(?:acl|properties|entry))|none",
+                                       "type" : "string",
+                                       "typetext" : "([acl];[properties];[entry])|none"
+                                    },
+                                    "schedule" : {
+                                       "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                                       "format" : "pve-calendar-event",
+                                       "maxLength" : 128,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "scope" : {
+                                       "description" : "Select what to sync.",
+                                       "enum" : [
+                                          "users",
+                                          "groups",
+                                          "both"
+                                       ],
                                        "optional" : 1,
                                        "type" : "string"
                                     }
                                  },
                                  "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "and",
+                                    [
+                                       "perm",
+                                       "/access/realm/{realm}",
+                                       [
+                                          "Realm.AllocateUser"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/access/groups",
+                                       [
+                                          "User.Modify"
+                                       ]
+                                    ]
+                                 ],
+                                 "description" : "'Realm.AllocateUser' on '/access/realm/<realm>' and 'User.Modify' permissions to '/access/groups/'."
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
                               }
                            },
                            "PUT" : {
                               "allowtoken" : 1,
-                              "description" : "Update existing ACME account information with CA. Note: not specifying any new account information triggers a refresh.",
+                              "description" : "Update realm-sync job definition.",
                               "method" : "PUT",
-                              "name" : "update_account",
+                              "name" : "update_job",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "contact" : {
-                                       "description" : "Contact email addresses.",
-                                       "format" : "email-list",
+                                    "comment" : {
+                                       "description" : "Description for the Job.",
+                                       "maxLength" : 512,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "name" : {
-                                       "default" : "default",
-                                       "description" : "ACME account config file name.",
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enable-new" : {
+                                       "default" : "1",
+                                       "description" : "Enable newly synced users immediately.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "enabled" : {
+                                       "default" : 1,
+                                       "description" : "Determines if the job is enabled.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "id" : {
+                                       "description" : "The ID of the job.",
                                        "format" : "pve-configid",
-                                       "format_description" : "name",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "remove-vanished" : {
+                                       "default" : "none",
+                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync. Instead of a list it also can be 'none' (the default).",
                                        "optional" : 1,
+                                       "pattern" : "(?:(?:(?:acl|properties|entry);)*(?:acl|properties|entry))|none",
                                        "type" : "string",
-                                       "typetext" : "<name>"
+                                       "typetext" : "([acl];[properties];[entry])|none"
+                                    },
+                                    "schedule" : {
+                                       "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                                       "format" : "pve-calendar-event",
+                                       "maxLength" : 128,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "scope" : {
+                                       "description" : "Select what to sync.",
+                                       "enum" : [
+                                          "users",
+                                          "groups",
+                                          "both"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
                                     }
-                                 }
+                                 },
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "and",
+                                    [
+                                       "perm",
+                                       "/access/realm/{realm}",
+                                       [
+                                          "Realm.AllocateUser"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/access/groups",
+                                       [
+                                          "User.Modify"
+                                       ]
+                                    ]
+                                 ],
+                                 "description" : "'Realm.AllocateUser' on '/access/realm/<realm>' and 'User.Modify' permissions to '/access/groups/'."
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "string"
+                                 "type" : "null"
                               }
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/cluster/acme/account/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "ACMEAccount index.",
-                        "method" : "GET",
-                        "name" : "account_index",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Register a new ACME account with CA.",
-                        "method" : "POST",
-                        "name" : "register_account",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "contact" : {
-                                 "description" : "Contact email addresses.",
-                                 "format" : "email-list",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "directory" : {
-                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
-                                 "description" : "URL of ACME CA directory endpoint.",
-                                 "optional" : 1,
-                                 "pattern" : "^https?://.*",
-                                 "type" : "string"
-                              },
-                              "name" : {
-                                 "default" : "default",
-                                 "description" : "ACME account config file name.",
-                                 "format" : "pve-configid",
-                                 "format_description" : "name",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<name>"
-                              },
-                              "tos_url" : {
-                                 "description" : "URL of CA TermsOfService - setting this indicates agreement.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "string"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/acme/account",
-                  "text" : "account"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Retrieve ACME TermsOfService URL from CA.",
-                        "method" : "GET",
-                        "name" : "get_tos",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "directory" : {
-                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
-                                 "description" : "URL of ACME CA directory endpoint.",
-                                 "optional" : 1,
-                                 "pattern" : "^https?://.*",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "description" : "ACME TermsOfService URL.",
-                           "optional" : 1,
-                           "type" : "string"
-                        }
+                        "path" : "/cluster/jobs/realm-sync/{id}",
+                        "text" : "{id}"
                      }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/acme/tos",
-                  "text" : "tos"
-               },
-               {
+                  ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get named known ACME directory endpoints.",
+                        "description" : "List configured realm-sync-jobs.",
                         "method" : "GET",
-                        "name" : "get_directories",
+                        "name" : "syncjob_index",
                         "parameters" : {
                            "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "user" : "all"
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
                         },
                         "returns" : {
                            "items" : {
-                              "additionalProperties" : 0,
                               "properties" : {
-                                 "name" : {
+                                 "comment" : {
+                                    "description" : "A comment for the job.",
+                                    "optional" : 1,
                                     "type" : "string"
                                  },
-                                 "url" : {
-                                    "description" : "URL of ACME CA directory endpoint.",
-                                    "pattern" : "^https?://.*",
+                                 "enabled" : {
+                                    "description" : "If the job is enabled or not.",
+                                    "type" : "boolean"
+                                 },
+                                 "id" : {
+                                    "description" : "The ID of the entry.",
+                                    "type" : "string"
+                                 },
+                                 "last-run" : {
+                                    "description" : "Last execution time of the job in seconds since the beginning of the UNIX epoch",
+                                    "optional" : 1,
+                                    "type" : "integer"
+                                 },
+                                 "next-run" : {
+                                    "description" : "Next planned execution time of the job in seconds since the beginning of the UNIX epoch.",
+                                    "optional" : 1,
+                                    "type" : "integer"
+                                 },
+                                 "realm" : {
+                                    "description" : "Authentication domain ID",
+                                    "format" : "pve-realm",
+                                    "maxLength" : 32,
+                                    "type" : "string"
+                                 },
+                                 "remove-vanished" : {
+                                    "default" : "none",
+                                    "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync. Instead of a list it also can be 'none' (the default).",
+                                    "optional" : "1",
+                                    "pattern" : "(?:(?:(?:acl|properties|entry);)*(?:acl|properties|entry))|none",
+                                    "type" : "string",
+                                    "typetext" : "([acl];[properties];[entry])|none"
+                                 },
+                                 "schedule" : {
+                                    "description" : "The configured sync schedule.",
+                                    "type" : "string"
+                                 },
+                                 "scope" : {
+                                    "description" : "Select what to sync.",
+                                    "enum" : [
+                                       "users",
+                                       "groups",
+                                       "both"
+                                    ],
+                                    "optional" : "1",
                                     "type" : "string"
                                  }
                               },
                               "type" : "object"
                            },
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
                            "type" : "array"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/cluster/acme/directories",
-                  "text" : "directories"
+                  "leaf" : 0,
+                  "path" : "/cluster/jobs/realm-sync",
+                  "text" : "realm-sync"
                },
                {
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get schema of ACME challenge types.",
+                        "description" : "Returns a list of future schedule runtimes.",
                         "method" : "GET",
-                        "name" : "challengeschema",
+                        "name" : "schedule-analyze",
                         "parameters" : {
-                           "additionalProperties" : 0
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "iterations" : {
+                                 "default" : 10,
+                                 "description" : "Number of event-iteration to simulate and return.",
+                                 "maximum" : 100,
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - 100)"
+                              },
+                              "schedule" : {
+                                 "description" : "Job schedule. The format is a subset of `systemd` calendar events.",
+                                 "format" : "pve-calendar-event",
+                                 "maxLength" : 128,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "starttime" : {
+                                 "description" : "UNIX timestamp to start the calculation from. Defaults to the current time.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              }
+                           }
                         },
                         "permissions" : {
                            "user" : "all"
                         },
                         "returns" : {
+                           "description" : "An array of the next <iterations> events since <starttime>.",
                            "items" : {
-                              "additionalProperties" : 0,
                               "properties" : {
-                                 "id" : {
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "description" : "Human readable name, falls back to id",
-                                    "type" : "string"
-                                 },
-                                 "schema" : {
-                                    "type" : "object"
+                                 "timestamp" : {
+                                    "description" : "UNIX timestamp for the run.",
+                                    "type" : "integer"
                                  },
-                                 "type" : {
+                                 "utc" : {
+                                    "description" : "UTC timestamp for the run.",
                                     "type" : "string"
                                  }
                               },
@@ -5928,14 +9151,14 @@ const apiSchema = [
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/cluster/acme/challenge-schema",
-                  "text" : "challenge-schema"
+                  "path" : "/cluster/jobs/schedule-analyze",
+                  "text" : "schedule-analyze"
                }
             ],
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "ACMEAccount index.",
+                  "description" : "Index for jobs related endpoints.",
                   "method" : "GET",
                   "name" : "index",
                   "parameters" : {
@@ -5945,13 +9168,19 @@ const apiSchema = [
                      "user" : "all"
                   },
                   "returns" : {
+                     "description" : "Directory index.",
                      "items" : {
-                        "properties" : {},
+                        "properties" : {
+                           "subdir" : {
+                              "description" : "API sub-directory endpoint",
+                              "type" : "string"
+                           }
+                        },
                         "type" : "object"
                      },
                      "links" : [
                         {
-                           "href" : "{name}",
+                           "href" : "{subdir}",
                            "rel" : "child"
                         }
                      ],
@@ -5960,169 +9189,523 @@ const apiSchema = [
                }
             },
             "leaf" : 0,
-            "path" : "/cluster/acme",
-            "text" : "acme"
+            "path" : "/cluster/jobs",
+            "text" : "jobs"
          },
          {
             "children" : [
                {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Remove Hardware Mapping.",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/mapping/pci",
+                                    [
+                                       "Mapping.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get PCI Mapping.",
+                              "method" : "GET",
+                              "name" : "get",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "perm",
+                                       "/mapping/pci/{id}",
+                                       [
+                                          "Mapping.Use"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/pci/{id}",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/pci/{id}",
+                                       [
+                                          "Mapping.Audit"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update a hardware mapping.",
+                              "method" : "PUT",
+                              "name" : "update",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "description" : {
+                                       "description" : "Description of the logical PCI device.",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "id" : {
+                                       "description" : "The ID of the logical PCI mapping.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "map" : {
+                                       "description" : "A list of maps for the cluster nodes.",
+                                       "items" : {
+                                          "format" : {
+                                             "description" : {
+                                                "description" : "Description of the node specific device.",
+                                                "maxLength" : 4096,
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "id" : {
+                                                "description" : "The vendor and device ID that is expected. Used for detecting hardware changes",
+                                                "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                                "type" : "string"
+                                             },
+                                             "iommugroup" : {
+                                                "description" : "The IOMMU group in which the device is to be expected in. Used for detecting hardware changes.",
+                                                "optional" : 1,
+                                                "type" : "integer"
+                                             },
+                                             "node" : {
+                                                "description" : "The cluster node name.",
+                                                "format" : "pve-node",
+                                                "type" : "string"
+                                             },
+                                             "path" : {
+                                                "description" : "The path to the device. If the function is omitted, the whole device is mapped. In that case use the attributes of the first device. You can give multiple paths as a semicolon seperated list, the first available will then be chosen on guest start.",
+                                                "pattern" : "(?:[a-f0-9]{4,}:[a-f0-9]{2}:[a-f0-9]{2}(?:.[a-f0-9])?;)*[a-f0-9]{4,}:[a-f0-9]{2}:[a-f0-9]{2}(?:.[a-f0-9])?",
+                                                "type" : "string"
+                                             },
+                                             "subsystem-id" : {
+                                                "description" : "The subsystem vendor and device ID that is expected. Used for detecting hardware changes.",
+                                                "optional" : 1,
+                                                "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "string"
+                                       },
+                                       "optional" : 1,
+                                       "type" : "array",
+                                       "typetext" : "<array>"
+                                    },
+                                    "mdev" : {
+                                       "default" : 0,
+                                       "description" : "Marks the device(s) as being capable of providing mediated devices.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/mapping/pci/{id}",
+                                    [
+                                       "Mapping.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/mapping/pci/{id}",
+                        "text" : "{id}"
+                     }
+                  ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get ceph metadata.",
+                        "description" : "List PCI Hardware Mapping",
                         "method" : "GET",
-                        "name" : "metadata",
+                        "name" : "index",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "scope" : {
-                                 "default" : "all",
-                                 "enum" : [
-                                    "all",
-                                    "versions"
-                                 ],
+                              "check-node" : {
+                                 "description" : "If given, checks the configurations on the given node for correctness, and adds relevant diagnostics for the devices to the response.",
+                                 "format" : "pve-node",
                                  "optional" : 1,
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               }
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit",
-                                 "Datastore.Audit"
-                              ],
-                              "any",
-                              1
-                           ]
+                           "description" : "Only lists entries where you have 'Mapping.Modify', 'Mapping.Use' or 'Mapping.Audit' permissions on '/mapping/pci/<id>'.",
+                           "user" : "all"
                         },
-                        "protected" : 1,
                         "returns" : {
-                           "type" : "object"
+                           "items" : {
+                              "properties" : {
+                                 "checks" : {
+                                    "description" : "A list of checks, only present if 'check_node' is set.",
+                                    "items" : {
+                                       "properties" : {
+                                          "message" : {
+                                             "description" : "The message of the error",
+                                             "type" : "string"
+                                          },
+                                          "severity" : {
+                                             "description" : "The severity of the error",
+                                             "enum" : [
+                                                "warning",
+                                                "error"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    },
+                                    "optional" : 1,
+                                    "type" : "array"
+                                 },
+                                 "description" : {
+                                    "description" : "A description of the logical mapping.",
+                                    "type" : "string"
+                                 },
+                                 "id" : {
+                                    "description" : "The logical ID of the mapping.",
+                                    "type" : "string"
+                                 },
+                                 "map" : {
+                                    "description" : "The entries of the mapping.",
+                                    "items" : {
+                                       "description" : "A mapping for a node.",
+                                       "type" : "string"
+                                    },
+                                    "type" : "array"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
                         }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/ceph/metadata",
-                  "text" : "metadata"
-               },
-               {
-                  "info" : {
-                     "GET" : {
+                     },
+                     "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Get ceph status.",
-                        "method" : "GET",
-                        "name" : "status",
+                        "description" : "Create a new hardware mapping.",
+                        "method" : "POST",
+                        "name" : "create",
                         "parameters" : {
-                           "additionalProperties" : 0
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "description" : {
+                                 "description" : "Description of the logical PCI device.",
+                                 "maxLength" : 4096,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "id" : {
+                                 "description" : "The ID of the logical PCI mapping.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "map" : {
+                                 "description" : "A list of maps for the cluster nodes.",
+                                 "items" : {
+                                    "format" : {
+                                       "description" : {
+                                          "description" : "Description of the node specific device.",
+                                          "maxLength" : 4096,
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "id" : {
+                                          "description" : "The vendor and device ID that is expected. Used for detecting hardware changes",
+                                          "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                          "type" : "string"
+                                       },
+                                       "iommugroup" : {
+                                          "description" : "The IOMMU group in which the device is to be expected in. Used for detecting hardware changes.",
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "node" : {
+                                          "description" : "The cluster node name.",
+                                          "format" : "pve-node",
+                                          "type" : "string"
+                                       },
+                                       "path" : {
+                                          "description" : "The path to the device. If the function is omitted, the whole device is mapped. In that case use the attributes of the first device. You can give multiple paths as a semicolon seperated list, the first available will then be chosen on guest start.",
+                                          "pattern" : "(?:[a-f0-9]{4,}:[a-f0-9]{2}:[a-f0-9]{2}(?:.[a-f0-9])?;)*[a-f0-9]{4,}:[a-f0-9]{2}:[a-f0-9]{2}(?:.[a-f0-9])?",
+                                          "type" : "string"
+                                       },
+                                       "subsystem-id" : {
+                                          "description" : "The subsystem vendor and device ID that is expected. Used for detecting hardware changes.",
+                                          "optional" : 1,
+                                          "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "string"
+                                 },
+                                 "optional" : 0,
+                                 "type" : "array",
+                                 "typetext" : "<array>"
+                              },
+                              "mdev" : {
+                                 "default" : 0,
+                                 "description" : "Marks the device(s) as being capable of providing mediated devices.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              }
+                           },
+                           "type" : "object"
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/",
+                              "/mapping/pci",
                               [
-                                 "Sys.Audit",
-                                 "Datastore.Audit"
-                              ],
-                              "any",
-                              1
+                                 "Mapping.Modify"
+                              ]
                            ]
                         },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "object"
+                           "type" : "null"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/cluster/ceph/status",
-                  "text" : "status"
+                  "leaf" : 0,
+                  "path" : "/cluster/mapping/pci",
+                  "text" : "pci"
                },
                {
                   "children" : [
                      {
                         "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Remove Hardware Mapping.",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/mapping/usb",
+                                    [
+                                       "Mapping.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get the status of a specific ceph flag.",
+                              "description" : "Get USB Mapping.",
                               "method" : "GET",
-                              "name" : "get_flag",
+                              "name" : "get",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "flag" : {
-                                       "description" : "The name of the flag name to get.",
-                                       "enum" : [
-                                          "nobackfill",
-                                          "nodeep-scrub",
-                                          "nodown",
-                                          "noin",
-                                          "noout",
-                                          "norebalance",
-                                          "norecover",
-                                          "noscrub",
-                                          "notieragent",
-                                          "noup",
-                                          "pause"
-                                       ],
-                                       "type" : "string"
+                                    "id" : {
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
-                                    "perm",
-                                    "/",
+                                    "or",
                                     [
-                                       "Sys.Audit"
+                                       "perm",
+                                       "/mapping/usb/{id}",
+                                       [
+                                          "Mapping.Audit"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/usb/{id}",
+                                       [
+                                          "Mapping.Use"
+                                       ]
+                                    ],
+                                    [
+                                       "perm",
+                                       "/mapping/usb/{id}",
+                                       [
+                                          "Mapping.Modify"
+                                       ]
                                     ]
                                  ]
                               },
                               "protected" : 1,
                               "returns" : {
-                                 "type" : "boolean"
+                                 "type" : "object"
                               }
                            },
                            "PUT" : {
                               "allowtoken" : 1,
-                              "description" : "Set or clear (unset) a specific ceph flag",
+                              "description" : "Update a hardware mapping.",
                               "method" : "PUT",
-                              "name" : "update_flag",
+                              "name" : "update",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "flag" : {
-                                       "description" : "The ceph flag to update",
-                                       "enum" : [
-                                          "nobackfill",
-                                          "nodeep-scrub",
-                                          "nodown",
-                                          "noin",
-                                          "noout",
-                                          "norebalance",
-                                          "norecover",
-                                          "noscrub",
-                                          "notieragent",
-                                          "noup",
-                                          "pause"
-                                       ],
-                                       "type" : "string"
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "description" : {
+                                       "description" : "Description of the logical USB device.",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "id" : {
+                                       "description" : "The ID of the logical USB mapping.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "value" : {
-                                       "description" : "The new value of the flag",
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                    "map" : {
+                                       "description" : "A list of maps for the cluster nodes.",
+                                       "items" : {
+                                          "format" : {
+                                             "description" : {
+                                                "description" : "Description of the node specific device.",
+                                                "maxLength" : 4096,
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "id" : {
+                                                "description" : "The vendor and device ID that is expected. If a USB path is given, it is only used for detecting hardware changes",
+                                                "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                                "type" : "string"
+                                             },
+                                             "node" : {
+                                                "description" : "The cluster node name.",
+                                                "format" : "pve-node",
+                                                "type" : "string"
+                                             },
+                                             "path" : {
+                                                "description" : "The path to the usb device.",
+                                                "optional" : 1,
+                                                "pattern" : "(?^:^(\\d+)\\-(\\d+(\\.\\d+)*)$)",
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "string"
+                                       },
+                                       "type" : "array",
+                                       "typetext" : "<array>"
                                     }
-                                 }
+                                 },
+                                 "type" : "object"
                               },
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/",
+                                    "/mapping/usb/{id}",
                                     [
-                                       "Sys.Modify"
+                                       "Mapping.Modify"
                                     ]
                                  ]
                               },
@@ -6133,256 +9716,159 @@ const apiSchema = [
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/cluster/ceph/flags/{flag}",
-                        "text" : "{flag}"
+                        "path" : "/cluster/mapping/usb/{id}",
+                        "text" : "{id}"
                      }
                   ],
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "get the status of all ceph flags",
+                        "description" : "List USB Hardware Mappings",
                         "method" : "GET",
-                        "name" : "get_all_flags",
+                        "name" : "index",
                         "parameters" : {
-                           "additionalProperties" : 0
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "check-node" : {
+                                 "description" : "If given, checks the configurations on the given node for correctness, and adds relevant errors to the devices.",
+                                 "format" : "pve-node",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
+                           "description" : "Only lists entries where you have 'Mapping.Modify', 'Mapping.Use' or 'Mapping.Audit' permissions on '/mapping/usb/<id>'.",
+                           "user" : "all"
                         },
-                        "protected" : 1,
                         "returns" : {
                            "items" : {
-                              "additionalProperties" : 1,
                               "properties" : {
-                                 "name" : {
-                                    "description" : "Flag name.",
-                                    "enum" : [
-                                       "nobackfill",
-                                       "nodeep-scrub",
-                                       "nodown",
-                                       "noin",
-                                       "noout",
-                                       "norebalance",
-                                       "norecover",
-                                       "noscrub",
-                                       "notieragent",
-                                       "noup",
-                                       "pause"
-                                    ],
+                                 "description" : {
+                                    "description" : "A description of the logical mapping.",
+                                    "type" : "string"
+                                 },
+                                 "error" : {
+                                    "description" : "A list of errors when 'check_node' is given.",
+                                    "items" : {
+                                       "properties" : {
+                                          "message" : {
+                                             "description" : "The message of the error",
+                                             "type" : "string"
+                                          },
+                                          "severity" : {
+                                             "description" : "The severity of the error",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "id" : {
+                                    "description" : "The logical ID of the mapping.",
                                     "type" : "string"
+                                 },
+                                 "map" : {
+                                    "description" : "The entries of the mapping.",
+                                    "items" : {
+                                       "description" : "A mapping for a node.",
+                                       "type" : "string"
+                                    },
+                                    "type" : "array"
                                  }
                               },
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{name}",
+                                 "href" : "{id}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
                      },
-                     "PUT" : {
+                     "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Set/Unset multiple ceph flags at once.",
-                        "method" : "PUT",
-                        "name" : "set_flags",
+                        "description" : "Create a new hardware mapping.",
+                        "method" : "POST",
+                        "name" : "create",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "nobackfill" : {
-                                 "description" : "Backfilling of PGs is suspended.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "nodeep-scrub" : {
-                                 "description" : "Deep Scrubbing is disabled.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "nodown" : {
-                                 "description" : "OSD failure reports are being ignored, such that the monitors will not mark OSDs down.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "noin" : {
-                                 "description" : "OSDs that were previously marked out will not be marked back in when they start.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "noout" : {
-                                 "description" : "OSDs will not automatically be marked out after the configured interval.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "norebalance" : {
-                                 "description" : "Rebalancing of PGs is suspended.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "norecover" : {
-                                 "description" : "Recovery of PGs is suspended.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "noscrub" : {
-                                 "description" : "Scrubbing is disabled.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "notieragent" : {
-                                 "description" : "Cache tiering activity is suspended.",
+                              "description" : {
+                                 "description" : "Description of the logical USB device.",
+                                 "maxLength" : 4096,
                                  "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
-                              "noup" : {
-                                 "description" : "OSDs are not allowed to start.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                              "id" : {
+                                 "description" : "The ID of the logical USB mapping.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
-                              "pause" : {
-                                 "description" : "Pauses read and writes.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                              "map" : {
+                                 "description" : "A list of maps for the cluster nodes.",
+                                 "items" : {
+                                    "format" : {
+                                       "description" : {
+                                          "description" : "Description of the node specific device.",
+                                          "maxLength" : 4096,
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "id" : {
+                                          "description" : "The vendor and device ID that is expected. If a USB path is given, it is only used for detecting hardware changes",
+                                          "pattern" : "(?^:^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$)",
+                                          "type" : "string"
+                                       },
+                                       "node" : {
+                                          "description" : "The cluster node name.",
+                                          "format" : "pve-node",
+                                          "type" : "string"
+                                       },
+                                       "path" : {
+                                          "description" : "The path to the usb device.",
+                                          "optional" : 1,
+                                          "pattern" : "(?^:^(\\d+)\\-(\\d+(\\.\\d+)*)$)",
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "string"
+                                 },
+                                 "type" : "array",
+                                 "typetext" : "<array>"
                               }
-                           }
+                           },
+                           "type" : "object"
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/",
+                              "/mapping/usb",
                               [
-                                 "Sys.Modify"
+                                 "Mapping.Modify"
                               ]
                            ]
                         },
                         "protected" : 1,
                         "returns" : {
-                           "type" : "string"
+                           "type" : "null"
                         }
                      }
                   },
                   "leaf" : 0,
-                  "path" : "/cluster/ceph/flags",
-                  "text" : "flags"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "Cluster ceph index.",
-                  "method" : "GET",
-                  "name" : "cephindex",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{name}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
-                  }
-               }
-            },
-            "leaf" : 0,
-            "path" : "/cluster/ceph",
-            "text" : "ceph"
-         },
-         {
-            "children" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Returns a list of future schedule runtimes.",
-                        "method" : "GET",
-                        "name" : "schedule-analyze",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "iterations" : {
-                                 "default" : 10,
-                                 "description" : "Number of event-iteration to simulate and return.",
-                                 "maximum" : 100,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 100)"
-                              },
-                              "schedule" : {
-                                 "description" : "Job schedule. The format is a subset of `systemd` calendar events.",
-                                 "format" : "pve-calendar-event",
-                                 "maxLength" : 128,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "UNIX timestamp to start the calculation from. Defaults to the current time.",
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "description" : "An array of the next <iterations> events since <starttime>.",
-                           "items" : {
-                              "properties" : {
-                                 "timestamp" : {
-                                    "description" : "UNIX timestamp for the run.",
-                                    "type" : "integer"
-                                 },
-                                 "utc" : {
-                                    "description" : "UTC timestamp for the run.",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/cluster/jobs/schedule-analyze",
-                  "text" : "schedule-analyze"
+                  "path" : "/cluster/mapping/usb",
+                  "text" : "usb"
                }
             ],
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Index for jobs related endpoints.",
+                  "description" : "List resource types.",
                   "method" : "GET",
                   "name" : "index",
                   "parameters" : {
@@ -6392,19 +9878,12 @@ const apiSchema = [
                      "user" : "all"
                   },
                   "returns" : {
-                     "description" : "Directory index.",
                      "items" : {
-                        "properties" : {
-                           "subdir" : {
-                              "description" : "API sub-directory endpoint",
-                              "type" : "string"
-                           }
-                        },
                         "type" : "object"
                      },
                      "links" : [
                         {
-                           "href" : "{subdir}",
+                           "href" : "{name}",
                            "rel" : "child"
                         }
                      ],
@@ -6413,8 +9892,8 @@ const apiSchema = [
                }
             },
             "leaf" : 0,
-            "path" : "/cluster/jobs",
-            "text" : "jobs"
+            "path" : "/cluster/mapping",
+            "text" : "mapping"
          },
          {
             "children" : [
@@ -6449,13 +9928,8 @@ const apiSchema = [
                                              }
                                           },
                                           "permissions" : {
-                                             "check" : [
-                                                "perm",
-                                                "/sdn/vnets/{vnet}/subnets",
-                                                [
-                                                   "SDN.Allocate"
-                                                ]
-                                             ]
+                                             "description" : "Require 'SDN.Allocate' permission on '/sdn/zones/<zone>/<vnet>'",
+                                             "user" : "all"
                                           },
                                           "protected" : 1,
                                           "returns" : {
@@ -6497,13 +9971,8 @@ const apiSchema = [
                                              }
                                           },
                                           "permissions" : {
-                                             "check" : [
-                                                "perm",
-                                                "/sdn/vnets/{vnet}/subnets/{subnet}",
-                                                [
-                                                   "SDN.Allocate"
-                                                ]
-                                             ]
+                                             "description" : "Require 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>/<vnet>'",
+                                             "user" : "all"
                                           },
                                           "returns" : {
                                              "type" : "object"
@@ -6525,9 +9994,26 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "dhcp-dns-server" : {
+                                                   "description" : "IP address for the DNS server",
+                                                   "format" : "ip",
+                                                   "optional" : 1,
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "dhcp-range" : {
+                                                   "description" : "A list of DHCP ranges for this subnet",
+                                                   "items" : {
+                                                      "format" : "pve-sdn-dhcp-range",
+                                                      "type" : "string"
+                                                   },
+                                                   "optional" : 1,
+                                                   "type" : "array",
+                                                   "typetext" : "<array>"
+                                                },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -6568,13 +10054,8 @@ const apiSchema = [
                                              "type" : "object"
                                           },
                                           "permissions" : {
-                                             "check" : [
-                                                "perm",
-                                                "/sdn/vnets/{vnet}/subnets",
-                                                [
-                                                   "SDN.Allocate"
-                                                ]
-                                             ]
+                                             "description" : "Require 'SDN.Allocate' permission on '/sdn/zones/<zone>/<vnet>'",
+                                             "user" : "all"
                                           },
                                           "protected" : 1,
                                           "returns" : {
@@ -6617,7 +10098,7 @@ const apiSchema = [
                                        }
                                     },
                                     "permissions" : {
-                                       "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/subnets/<subnet>'",
+                                       "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>/<vnet>'",
                                        "user" : "all"
                                     },
                                     "returns" : {
@@ -6642,6 +10123,23 @@ const apiSchema = [
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
+                                          "dhcp-dns-server" : {
+                                             "description" : "IP address for the DNS server",
+                                             "format" : "ip",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "dhcp-range" : {
+                                             "description" : "A list of DHCP ranges for this subnet",
+                                             "items" : {
+                                                "format" : "pve-sdn-dhcp-range",
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array",
+                                             "typetext" : "<array>"
+                                          },
                                           "dnszoneprefix" : {
                                              "description" : "dns domain zone prefix  ex: 'adm' -> <hostname>.adm.mydomain.com",
                                              "format" : "dns-name",
@@ -6683,10 +10181,174 @@ const apiSchema = [
                                        },
                                        "type" : "object"
                                     },
+                                    "permissions" : {
+                                       "description" : "Require 'SDN.Allocate' permission on '/sdn/zones/<zone>/<vnet>'",
+                                       "user" : "all"
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 0,
+                              "path" : "/cluster/sdn/vnets/{vnet}/subnets",
+                              "text" : "subnets"
+                           },
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Delete IP Mappings in a VNet",
+                                    "method" : "DELETE",
+                                    "name" : "ipdelete",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "ip" : {
+                                             "description" : "The IP address to delete",
+                                             "format" : "ip",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "mac" : {
+                                             "description" : "Unicast MAC address.",
+                                             "format" : "mac-addr",
+                                             "format_description" : "XX:XX:XX:XX:XX:XX",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<XX:XX:XX:XX:XX:XX>",
+                                             "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                          },
+                                          "vnet" : {
+                                             "description" : "The SDN vnet object identifier.",
+                                             "format" : "pve-sdn-vnet-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "zone" : {
+                                             "description" : "The SDN zone object identifier.",
+                                             "format" : "pve-sdn-zone-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/sdn/zones/{zone}/{vnet}",
+                                          [
+                                             "SDN.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Create IP Mapping in a VNet",
+                                    "method" : "POST",
+                                    "name" : "ipcreate",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "ip" : {
+                                             "description" : "The IP address to associate with the given MAC address",
+                                             "format" : "ip",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "mac" : {
+                                             "description" : "Unicast MAC address.",
+                                             "format" : "mac-addr",
+                                             "format_description" : "XX:XX:XX:XX:XX:XX",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<XX:XX:XX:XX:XX:XX>",
+                                             "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                          },
+                                          "vnet" : {
+                                             "description" : "The SDN vnet object identifier.",
+                                             "format" : "pve-sdn-vnet-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "zone" : {
+                                             "description" : "The SDN zone object identifier.",
+                                             "format" : "pve-sdn-zone-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/sdn/zones/{zone}/{vnet}",
+                                          [
+                                             "SDN.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Update IP Mapping in a VNet",
+                                    "method" : "PUT",
+                                    "name" : "ipupdate",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "ip" : {
+                                             "description" : "The IP address to associate with the given MAC address",
+                                             "format" : "ip",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "mac" : {
+                                             "description" : "Unicast MAC address.",
+                                             "format" : "mac-addr",
+                                             "format_description" : "XX:XX:XX:XX:XX:XX",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<XX:XX:XX:XX:XX:XX>",
+                                             "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set."
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (100 - 999999999)"
+                                          },
+                                          "vnet" : {
+                                             "description" : "The SDN vnet object identifier.",
+                                             "format" : "pve-sdn-vnet-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "zone" : {
+                                             "description" : "The SDN zone object identifier.",
+                                             "format" : "pve-sdn-zone-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
                                     "permissions" : {
                                        "check" : [
                                           "perm",
-                                          "/sdn/vnets/{vnet}/subnets",
+                                          "/sdn/zones/{zone}/{vnet}",
                                           [
                                              "SDN.Allocate"
                                           ]
@@ -6698,9 +10360,9 @@ const apiSchema = [
                                     }
                                  }
                               },
-                              "leaf" : 0,
-                              "path" : "/cluster/sdn/vnets/{vnet}/subnets",
-                              "text" : "subnets"
+                              "leaf" : 1,
+                              "path" : "/cluster/sdn/vnets/{vnet}/ips",
+                              "text" : "ips"
                            }
                         ],
                         "info" : {
@@ -6721,13 +10383,8 @@ const apiSchema = [
                                  }
                               },
                               "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/sdn/vnets",
-                                    [
-                                       "SDN.Allocate"
-                                    ]
-                                 ]
+                                 "description" : "Require 'SDN.Allocate' permission on '/sdn/zones/<zone>/<vnet>'",
+                                 "user" : "all"
                               },
                               "protected" : 1,
                               "returns" : {
@@ -6763,13 +10420,8 @@ const apiSchema = [
                                  }
                               },
                               "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/sdn/vnets/{vnet}",
-                                    [
-                                       "SDN.Allocate"
-                                    ]
-                                 ]
+                                 "description" : "Require 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>/<vnet>'",
+                                 "user" : "all"
                               },
                               "returns" : {
                                  "type" : "object"
@@ -6799,8 +10451,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -6833,13 +10485,8 @@ const apiSchema = [
                                  "type" : "object"
                               },
                               "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/sdn/vnets",
-                                    [
-                                       "SDN.Allocate"
-                                    ]
-                                 ]
+                                 "description" : "Require 'SDN.Allocate' permission on '/sdn/zones/<zone>/<vnet>'",
+                                 "user" : "all"
                               },
                               "protected" : 1,
                               "returns" : {
@@ -6876,7 +10523,7 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/vnets/<vnet>'",
+                           "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>/<vnet>'",
                            "user" : "all"
                         },
                         "returns" : {
@@ -6946,7 +10593,7 @@ const apiSchema = [
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/sdn/vnets",
+                              "/sdn/zones/{zone}",
                               [
                                  "SDN.Allocate"
                               ]
@@ -6985,7 +10632,7 @@ const apiSchema = [
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/sdn/zones",
+                                    "/sdn/zones/{zone}",
                                     [
                                        "SDN.Allocate"
                                     ]
@@ -7076,9 +10723,17 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "dhcp" : {
+                                       "description" : "Type of the DHCP backend for this zone",
+                                       "enum" : [
+                                          "dnsmasq"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -7196,6 +10851,14 @@ const apiSchema = [
                                        "type" : "integer",
                                        "typetext" : "<integer>"
                                     },
+                                    "vxlan-port" : {
+                                       "description" : "Vxlan tunnel udp port (default 4789).",
+                                       "maximum" : 65536,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 65536)"
+                                    },
                                     "zone" : {
                                        "description" : "The SDN zone object identifier.",
                                        "format" : "pve-sdn-zone-id",
@@ -7208,7 +10871,7 @@ const apiSchema = [
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/sdn/zones",
+                                    "/sdn/zones/{zone}",
                                     [
                                        "SDN.Allocate"
                                     ]
@@ -7268,6 +10931,10 @@ const apiSchema = [
                         "returns" : {
                            "items" : {
                               "properties" : {
+                                 "dhcp" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
                                  "dns" : {
                                     "optional" : 1,
                                     "type" : "string"
@@ -7289,7 +10956,8 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "pending" : {
-                                    "optional" : 1
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
                                  "reversedns" : {
                                     "optional" : 1,
@@ -7348,6 +11016,14 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "dhcp" : {
+                                 "description" : "Type of the DHCP backend for this zone",
+                                 "enum" : [
+                                    "dnsmasq"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
                               "disable-arp-nd-suppression" : {
                                  "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
                                  "optional" : 1,
@@ -7474,6 +11150,14 @@ const apiSchema = [
                                  "type" : "integer",
                                  "typetext" : "<integer>"
                               },
+                              "vxlan-port" : {
+                                 "description" : "Vxlan tunnel udp port (default 4789).",
+                                 "maximum" : 65536,
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - 65536)"
+                              },
                               "zone" : {
                                  "description" : "The SDN zone object identifier.",
                                  "format" : "pve-sdn-zone-id",
@@ -7613,8 +11297,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -7630,6 +11314,26 @@ const apiSchema = [
                                        "type" : "integer",
                                        "typetext" : "<integer>"
                                     },
+                                    "isis-domain" : {
+                                       "description" : "ISIS domain.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "isis-ifaces" : {
+                                       "description" : "ISIS interface.",
+                                       "format" : "pve-iface-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "isis-net" : {
+                                       "description" : "ISIS network entity title.",
+                                       "format" : "pve-sdn-isis-net",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "loopback" : {
                                        "description" : "source loopback interface.",
                                        "optional" : 1,
@@ -7699,7 +11403,8 @@ const apiSchema = [
                                  "enum" : [
                                     "bgp",
                                     "evpn",
-                                    "faucet"
+                                    "faucet",
+                                    "isis"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -7717,7 +11422,8 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "pending" : {
-                                    "optional" : 1
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
                                  "state" : {
                                     "optional" : 1,
@@ -7776,6 +11482,26 @@ const apiSchema = [
                                  "type" : "integer",
                                  "typetext" : "<integer>"
                               },
+                              "isis-domain" : {
+                                 "description" : "ISIS domain.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "isis-ifaces" : {
+                                 "description" : "ISIS interface.",
+                                 "format" : "pve-iface-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "isis-net" : {
+                                 "description" : "ISIS network entity title.",
+                                 "format" : "pve-sdn-isis-net",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "loopback" : {
                                  "description" : "source loopback interface.",
                                  "optional" : 1,
@@ -7801,7 +11527,8 @@ const apiSchema = [
                                  "enum" : [
                                     "bgp",
                                     "evpn",
-                                    "faucet"
+                                    "faucet",
+                                    "isis"
                                  ],
                                  "format" : "pve-configid",
                                  "type" : "string"
@@ -7831,6 +11558,40 @@ const apiSchema = [
                {
                   "children" : [
                      {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "List PVE IPAM Entries",
+                                    "method" : "GET",
+                                    "name" : "ipamindex",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "ipam" : {
+                                             "description" : "The SDN ipam object identifier.",
+                                             "format" : "pve-sdn-ipam-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/<zone>/<vnet>'",
+                                       "user" : "all"
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/cluster/sdn/ipams/{ipam}/status",
+                              "text" : "status"
+                           }
+                        ],
                         "info" : {
                            "DELETE" : {
                               "allowtoken" : 1,
@@ -7908,8 +11669,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -7953,7 +11714,7 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 1,
+                        "leaf" : 0,
                         "path" : "/cluster/sdn/ipams/{ipam}",
                         "text" : "{ipam}"
                      }
@@ -8145,8 +11906,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -8326,7 +12087,7 @@ const apiSchema = [
                   "permissions" : {
                      "check" : [
                         "perm",
-                        "/",
+                        "/sdn",
                         [
                            "SDN.Audit"
                         ]
@@ -8471,6 +12232,7 @@ const apiSchema = [
                               "type" : "string"
                            },
                            "id" : {
+                              "description" : "Resource id.",
                               "type" : "string"
                            },
                            "level" : {
@@ -8533,6 +12295,7 @@ const apiSchema = [
                            "storage" : {
                               "description" : "The storage identifier (when type == storage).",
                               "format" : "pve-storage-id",
+                              "format_description" : "storage ID",
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -8557,7 +12320,9 @@ const apiSchema = [
                            },
                            "vmid" : {
                               "description" : "The numerical vmid (when type in qemu,lxc).",
-                              "minimum" : 1,
+                              "format" : "pve-vmid",
+                              "maximum" : 999999999,
+                              "minimum" : 100,
                               "optional" : 1,
                               "type" : "integer"
                            }
@@ -8635,7 +12400,7 @@ const apiSchema = [
                      "additionalProperties" : 0,
                      "properties" : {
                         "bwlimit" : {
-                           "description" : "Set bandwidth/io limits various operations.",
+                           "description" : "Set I/O bandwidth limit for various operations (in KiB/s).",
                            "format" : {
                               "clone" : {
                                  "description" : "bandwidth limit in KiB/s for cloning disks",
@@ -8698,13 +12463,20 @@ const apiSchema = [
                                     "basic",
                                     "static"
                                  ],
+                                 "optional" : 1,
                                  "type" : "string",
                                  "verbose_description" : "Configures how the HA manager should select nodes to start or recover services. With 'basic', only the number of services is used, with 'static', static CPU and memory configuration of services is considered."
+                              },
+                              "ha-rebalance-on-start" : {
+                                 "default" : 0,
+                                 "description" : "Set to use CRS for selecting a suited node when a HA services request-state changes from stop to start.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
                               }
                            },
                            "optional" : 1,
                            "type" : "string",
-                           "typetext" : "ha=<basic|static>"
+                           "typetext" : "[ha=<basic|static>] [,ha-rebalance-on-start=<1|0>]"
                         },
                         "delete" : {
                            "description" : "A list of settings you want to delete.",
@@ -8799,6 +12571,7 @@ const apiSchema = [
                         "language" : {
                            "description" : "Default GUI language.",
                            "enum" : [
+                              "ar",
                               "ca",
                               "da",
                               "de",
@@ -8807,10 +12580,14 @@ const apiSchema = [
                               "eu",
                               "fa",
                               "fr",
+                              "hr",
                               "he",
                               "it",
                               "ja",
+                              "ka",
+                              "kr",
                               "nb",
+                              "nl",
                               "nn",
                               "pl",
                               "pt_BR",
@@ -8818,6 +12595,7 @@ const apiSchema = [
                               "sl",
                               "sv",
                               "tr",
+                              "ukr",
                               "zh_CN",
                               "zh_TW"
                            ],
@@ -8825,11 +12603,13 @@ const apiSchema = [
                            "type" : "string"
                         },
                         "mac_prefix" : {
-                           "description" : "Prefix for autogenerated MAC addresses.",
+                           "default" : "BC:24:11",
+                           "description" : "Prefix for the auto-generated MAC addresses of virtual guests. The default 'BC:24:11' is the OUI assigned by the IEEE to Proxmox Server Solutions GmbH for a 24-bit large MAC block. You're allowed to use this in local networks, i.e., those not directly reachable by the public (e.g., in a LAN or behind NAT).",
                            "format" : "mac-prefix",
                            "optional" : 1,
                            "type" : "string",
-                           "typetext" : "<string>"
+                           "typetext" : "<string>",
+                           "verbose_description" : "Prefix for the auto-generated MAC addresses of virtual guests. The default `BC:24:11` is the Organizationally Unique Identifier (OUI) assigned by the IEEE to Proxmox Server Solutions GmbH for a MAC Address Block Large (MA-L). You're allowed to use this in local networks, i.e., those not directly reachable by the public (e.g., in a LAN or NAT/Masquerading).\n \nNote that when you run multiple cluster that (partially) share the networks of their virtual guests, it's highly recommended that you extend the default MAC prefix, or generate a custom (valid) one, to reduce the chance of MAC collisions. For example, add a separate extra hexadecimal to the Proxmox OUI for each cluster, like `BC:24:11:0` for the first, `BC:24:11:1` for the second, and so on.\n Alternatively, you can also separate the networks of the guests logically, e.g., by using VLANs.\n\nFor publicly accessible guests it's recommended that you get your own https://standards.ieee.org/products-programs/regauth/[OUI from the IEEE] registered or coordinate with your, or your hosting providers, network admins."
                         },
                         "max_workers" : {
                            "description" : "Defines how many workers (per node) are maximal started  on actions like 'stopall VMs' or task from the ha-manager.",
@@ -8893,6 +12673,62 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "[lower=<integer>] [,upper=<integer>]"
                         },
+                        "notify" : {
+                           "description" : "Cluster-wide notification settings.",
+                           "format" : {
+                              "fencing" : {
+                                 "description" : "UNUSED - Use datacenter notification settings instead.",
+                                 "enum" : [
+                                    "always",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "package-updates" : {
+                                 "default" : "auto",
+                                 "description" : "DEPRECATED: Use datacenter notification settings instead. Control when the daily update job should send out notifications.",
+                                 "enum" : [
+                                    "auto",
+                                    "always",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "verbose_description" : "DEPRECATED: Use datacenter notification settings instead.\nControl how often the daily update job should send out notifications:\n* 'auto' daily for systems with a valid subscription, as those are assumed to be  production-ready and thus should know about pending updates.\n* 'always' every update, if there are new pending updates.\n* 'never' never send a notification for new pending updates.\n"
+                              },
+                              "replication" : {
+                                 "description" : "UNUSED - Use datacenter notification settings instead.",
+                                 "enum" : [
+                                    "always",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "target-fencing" : {
+                                 "description" : "UNUSED - Use datacenter notification settings instead.",
+                                 "format_description" : "TARGET",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "target-package-updates" : {
+                                 "description" : "UNUSED - Use datacenter notification settings instead.",
+                                 "format_description" : "TARGET",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "target-replication" : {
+                                 "description" : "UNUSED - Use datacenter notification settings instead.",
+                                 "format_description" : "TARGET",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[fencing=<always|never>] [,package-updates=<auto|always|never>] [,replication=<always|never>] [,target-fencing=<TARGET>] [,target-package-updates=<TARGET>] [,target-replication=<TARGET>]"
+                        },
                         "registered-tags" : {
                            "description" : "A list of tags that require a `Sys.Modify` on '/' to set and delete. Tags set here that are also in 'user-tag-access' also require `Sys.Modify`.",
                            "optional" : 1,
@@ -8977,7 +12813,7 @@ const apiSchema = [
                                  ],
                                  "optional" : 1,
                                  "type" : "string",
-                                 "verbose_description" : "Controls which tags can be set or deleted on resources a user controls (such as guests). Users with the `Sys.Modify` privilege on `/` are always  unrestricted. 'none' no tags are usable. 'list' tags from 'user-allow-list' are usable. 'existing' like list, but already existing tags of resources are also usable.'free' no tag restrictions."
+                                 "verbose_description" : "Controls which tags can be set or deleted on resources a user controls (such as guests). Users with the `Sys.Modify` privilege on `/` are alwaysunrestricted.\n* 'none' no tags are usable.\n* 'list' tags from 'user-allow-list' are usable.\n* 'existing' like list, but already existing tags of resources are also usable.\n* 'free' no tag restrictions.\n"
                               },
                               "user-allow-list" : {
                                  "description" : "List of tags users are allowed to set and delete (semicolon separated) for 'user-allow' values 'list' and 'existing'.",
@@ -9145,10 +12981,11 @@ const apiSchema = [
                         "vmid" : {
                            "description" : "The (unique) ID of the VM.",
                            "format" : "pve-vmid",
-                           "minimum" : 1,
+                           "maximum" : 999999999,
+                           "minimum" : 100,
                            "optional" : 1,
                            "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
+                           "typetext" : "<integer> (100 - 999999999)"
                         }
                      }
                   },
@@ -9220,8 +13057,8 @@ const apiSchema = [
                                                    "additionalProperties" : 0,
                                                    "properties" : {
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -9242,9 +13079,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9287,9 +13125,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9416,8 +13255,8 @@ const apiSchema = [
                                                          "typetext" : "<string>"
                                                       },
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -9437,7 +13276,7 @@ const apiSchema = [
                                                          "typetext" : "<integer> (0 - N)"
                                                       },
                                                       "icmp-type" : {
-                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                          "format" : "pve-fw-icmp-type-spec",
                                                          "optional" : 1,
                                                          "type" : "string",
@@ -9530,9 +13369,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9575,9 +13415,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -9640,8 +13481,8 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -9661,7 +13502,7 @@ const apiSchema = [
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
                                                 "icmp-type" : {
-                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                    "format" : "pve-fw-icmp-type-spec",
                                                    "optional" : 1,
                                                    "type" : "string",
@@ -9747,9 +13588,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -9786,8 +13628,8 @@ const apiSchema = [
                                                    "additionalProperties" : 0,
                                                    "properties" : {
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -9808,9 +13650,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9852,9 +13695,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9891,8 +13735,8 @@ const apiSchema = [
                                                          "typetext" : "<string>"
                                                       },
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -9921,9 +13765,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -9965,9 +13810,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -9991,8 +13837,8 @@ const apiSchema = [
                                                       "type" : "string"
                                                    },
                                                    "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
+                                                      "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                      "maxLength" : 64,
                                                       "optional" : 0,
                                                       "type" : "string"
                                                    },
@@ -10046,9 +13892,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10092,8 +13939,8 @@ const apiSchema = [
                                                                "typetext" : "<string>"
                                                             },
                                                             "digest" : {
-                                                               "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                               "maxLength" : 40,
+                                                               "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                               "maxLength" : 64,
                                                                "optional" : 1,
                                                                "type" : "string",
                                                                "typetext" : "<string>"
@@ -10114,9 +13961,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -10164,9 +14012,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -10204,8 +14053,8 @@ const apiSchema = [
                                                                "typetext" : "<string>"
                                                             },
                                                             "digest" : {
-                                                               "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                               "maxLength" : 40,
+                                                               "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                               "maxLength" : 64,
                                                                "optional" : 1,
                                                                "type" : "string",
                                                                "typetext" : "<string>"
@@ -10231,9 +14080,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -10288,9 +14138,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -10332,9 +14183,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -10358,8 +14210,8 @@ const apiSchema = [
                                                             "type" : "string"
                                                          },
                                                          "digest" : {
-                                                            "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                            "maxLength" : 40,
+                                                            "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                            "maxLength" : 64,
                                                             "optional" : 0,
                                                             "type" : "string"
                                                          },
@@ -10419,9 +14271,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -10463,9 +14316,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10486,8 +14340,8 @@ const apiSchema = [
                                                       "type" : "string"
                                                    },
                                                    "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
+                                                      "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                      "maxLength" : 64,
                                                       "optional" : 0,
                                                       "type" : "string"
                                                    },
@@ -10524,8 +14378,8 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -10554,9 +14408,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10598,9 +14453,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10729,8 +14585,8 @@ const apiSchema = [
                                                    "typetext" : "<boolean>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -10829,9 +14685,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10877,18 +14734,33 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "since" : {
+                                                   "description" : "Display log since this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "start" : {
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer",
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
+                                                "until" : {
+                                                   "description" : "Display log until this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10953,9 +14825,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -10978,6 +14851,12 @@ const apiSchema = [
                                                    "name" : {
                                                       "type" : "string"
                                                    },
+                                                   "ref" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "scope" : {
+                                                      "type" : "string"
+                                                   },
                                                    "type" : {
                                                       "enum" : [
                                                          "alias",
@@ -11015,9 +14894,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -11064,9 +14944,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11110,9 +14991,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11156,9 +15038,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11202,9 +15085,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11248,9 +15132,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11294,9 +15179,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11340,9 +15226,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11386,9 +15273,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11432,9 +15320,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11478,9 +15367,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11524,9 +15414,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11570,9 +15461,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11616,9 +15508,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11662,9 +15555,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11708,9 +15602,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11754,9 +15649,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11800,9 +15696,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11846,9 +15743,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11892,9 +15790,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -11938,9 +15837,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12003,9 +15903,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12041,11 +15942,13 @@ const apiSchema = [
                                              "additionalProperties" : 0,
                                              "properties" : {
                                                 "command" : {
-                                                   "description" : "The command as a list of program + arguments",
-                                                   "format" : "string-alist",
-                                                   "optional" : 1,
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "description" : "The command as a list of program + arguments.",
+                                                   "items" : {
+                                                      "description" : "A single part of the program + arguments.",
+                                                      "format" : "string"
+                                                   },
+                                                   "type" : "array",
+                                                   "typetext" : "<array>"
                                                 },
                                                 "input-data" : {
                                                    "description" : "Data to pass as 'input-data' to the guest. Usually treated as STDIN to 'command'.",
@@ -12063,9 +15966,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12119,9 +16023,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12205,9 +16110,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12280,9 +16186,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -12310,7 +16217,7 @@ const apiSchema = [
                               "info" : {
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "Qemu Agent command index.",
+                                    "description" : "QEMU Guest Agent command index.",
                                     "method" : "GET",
                                     "name" : "index",
                                     "parameters" : {
@@ -12325,9 +16232,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -12336,7 +16244,7 @@ const apiSchema = [
                                     },
                                     "proxyto" : "node",
                                     "returns" : {
-                                       "description" : "Returns the list of Qemu Agent commands",
+                                       "description" : "Returns the list of QEMU Guest Agent commands",
                                        "items" : {
                                           "properties" : {},
                                           "type" : "object"
@@ -12352,7 +16260,7 @@ const apiSchema = [
                                  },
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Execute Qemu Guest Agent commands.",
+                                    "description" : "Execute QEMU Guest Agent commands.",
                                     "method" : "POST",
                                     "name" : "agent",
                                     "parameters" : {
@@ -12393,9 +16301,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -12465,9 +16374,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -12534,9 +16444,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -12597,9 +16508,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -12629,12 +16541,18 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -12670,7 +16588,7 @@ const apiSchema = [
                                              "description" : "Arbitrary arguments passed to kvm.",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n"
+                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -smbios 'type=0,vendor=FOO'\n\nNOTE: this option is for experts only.\n"
                                           },
                                           "audio0" : {
                                              "description" : "Configure a audio device, useful in combination with QXL/Spice.",
@@ -12705,7 +16623,7 @@ const apiSchema = [
                                              "type" : "boolean"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer"
@@ -12761,6 +16679,12 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string"
                                           },
+                                          "ciupgrade" : {
+                                             "default" : 1,
+                                             "description" : "cloud-init: do an automatic package upgrade after the first boot.",
+                                             "optional" : 1,
+                                             "type" : "boolean"
+                                          },
                                           "ciuser" : {
                                              "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
                                              "optional" : 1,
@@ -12808,11 +16732,11 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars.",
+                                             "description" : "Configure a disk for storing EFI vars.",
                                              "format" : {
                                                 "efitype" : {
                                                    "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarch64 (ARM).",
                                                    "enum" : [
                                                       "2m",
                                                       "4m"
@@ -13313,18 +17237,43 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
+                                             "description" : "Specify the QEMU machine.",
+                                             "format" : {
+                                                "type" : {
+                                                   "default_key" : 1,
+                                                   "description" : "Specifies the QEMU machine type.",
+                                                   "format_description" : "machine type",
+                                                   "maxLength" : 40,
+                                                   "optional" : 1,
+                                                   "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                                   "type" : "string"
+                                                },
+                                                "viommu" : {
+                                                   "description" : "Enable and set guest vIOMMU variant (Intel vIOMMU needs q35 to be set as machine type).",
+                                                   "enum" : [
+                                                      "intel",
+                                                      "virtio"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
                                              "type" : "string"
                                           },
                                           "memory" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
+                                             "description" : "Memory properties.",
+                                             "format" : {
+                                                "current" : {
+                                                   "default" : 512,
+                                                   "default_key" : 1,
+                                                   "description" : "Current amount of online RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
+                                                   "minimum" : 16,
+                                                   "type" : "integer"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "type" : "integer"
+                                             "type" : "string"
                                           },
                                           "migrate_downtime" : {
                                              "default" : 0.1,
@@ -13561,7 +17510,7 @@ const apiSchema = [
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022/2025\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 6.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
                                           },
                                           "parallel[n]" : {
                                              "description" : "Map host parallel devices (n is 0 to 2).",
@@ -14162,6 +18111,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "product" : {
+                                                   "description" : "The drive's product name, up to 16 bytes long.",
+                                                   "format_description" : "product",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,16}",
+                                                   "type" : "string"
+                                                },
                                                 "queues" : {
                                                    "description" : "Number of queues.",
                                                    "minimum" : 2,
@@ -14242,6 +18198,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "vendor" : {
+                                                   "description" : "The drive's vendor name, up to 8 bytes long.",
+                                                   "format_description" : "vendor",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,8}",
+                                                   "type" : "string"
+                                                },
                                                 "volume" : {
                                                    "alias" : "file"
                                                 },
@@ -14448,9 +18411,17 @@ const apiSchema = [
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
-                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
-                                                   "format" : "pve-qm-usb-device",
+                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n\nEither this or the 'mapping' key must be set.\n",
                                                    "format_description" : "HOSTUSBDEVICE|spice",
+                                                   "optional" : 1,
+                                                   "pattern" : "(?^:(?:(?:(?^:(0x)?([0-9A-Fa-f]{4}):(0x)?([0-9A-Fa-f]{4})))|(?:(?^:(\\d+)\\-(\\d+(\\.\\d+)*)))|[Ss][Pp][Ii][Cc][Ee]))",
+                                                   "type" : "string"
+                                                },
+                                                "mapping" : {
+                                                   "description" : "The ID of a cluster wide mapping. Either this or the default-key 'host' must be set.",
+                                                   "format" : "pve-configid",
+                                                   "format_description" : "mapping-id",
+                                                   "optional" : 1,
                                                    "type" : "string"
                                                 },
                                                 "usb3" : {
@@ -14473,6 +18444,14 @@ const apiSchema = [
                                           "vga" : {
                                              "description" : "Configure the VGA hardware.",
                                              "format" : {
+                                                "clipboard" : {
+                                                   "description" : "Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Migration with VNC clipboard is not yet supported!",
+                                                   "enum" : [
+                                                      "vnc"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "memory" : {
                                                    "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
                                                    "maximum" : 512,
@@ -14835,6 +18814,7 @@ const apiSchema = [
                                           "vmstatestorage" : {
                                              "description" : "Default storage for VM state volumes/files.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string"
                                           },
@@ -14872,12 +18852,18 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -14899,7 +18885,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                             "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                                           },
                                           "arch" : {
                                              "description" : "Virtual processor architecture. Defaults to the host.",
@@ -14915,7 +18901,7 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>",
-                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n"
+                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -smbios 'type=0,vendor=FOO'\n\nNOTE: this option is for experts only.\n"
                                           },
                                           "audio0" : {
                                              "description" : "Configure a audio device, useful in combination with QXL/Spice.",
@@ -14960,7 +18946,7 @@ const apiSchema = [
                                              "typetext" : "<integer> (1 - 30)"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -15020,6 +19006,13 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string"
                                           },
+                                          "ciupgrade" : {
+                                             "default" : 1,
+                                             "description" : "cloud-init: do an automatic package upgrade after the first boot.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "ciuser" : {
                                              "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
                                              "optional" : 1,
@@ -15083,11 +19076,11 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "efitype" : {
                                                    "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarch64 (ARM).",
                                                    "enum" : [
                                                       "2m",
                                                       "4m"
@@ -15169,7 +19162,7 @@ const apiSchema = [
                                              "format" : "pve-qm-hostpci",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
+                                             "typetext" : "[[host=]<HOSTPCIID[;HOSTPCIID2...]>] [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mapping=<mapping-id>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
                                              "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
                                           },
                                           "hotplug" : {
@@ -15620,19 +19613,45 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
+                                             "description" : "Specify the QEMU machine.",
+                                             "format" : {
+                                                "type" : {
+                                                   "default_key" : 1,
+                                                   "description" : "Specifies the QEMU machine type.",
+                                                   "format_description" : "machine type",
+                                                   "maxLength" : 40,
+                                                   "optional" : 1,
+                                                   "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                                   "type" : "string"
+                                                },
+                                                "viommu" : {
+                                                   "description" : "Enable and set guest vIOMMU variant (Intel vIOMMU needs q35 to be set as machine type).",
+                                                   "enum" : [
+                                                      "intel",
+                                                      "virtio"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
-                                             "type" : "string"
+                                             "type" : "string",
+                                             "typetext" : "[[type=]<machine type>] [,viommu=<intel|virtio>]"
                                           },
                                           "memory" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
+                                             "description" : "Memory properties.",
+                                             "format" : {
+                                                "current" : {
+                                                   "default" : 512,
+                                                   "default_key" : 1,
+                                                   "description" : "Current amount of online RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
+                                                   "minimum" : 16,
+                                                   "type" : "integer"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - N)"
+                                             "type" : "string",
+                                             "typetext" : "[current=]<integer>"
                                           },
                                           "migrate_downtime" : {
                                              "default" : 0.1,
@@ -15883,7 +19902,7 @@ const apiSchema = [
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022/2025\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 6.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
                                           },
                                           "parallel[n]" : {
                                              "description" : "Map host parallel devices (n is 0 to 2).",
@@ -16509,6 +20528,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "product" : {
+                                                   "description" : "The drive's product name, up to 16 bytes long.",
+                                                   "format_description" : "product",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,16}",
+                                                   "type" : "string"
+                                                },
                                                 "queues" : {
                                                    "description" : "Number of queues.",
                                                    "minimum" : 2,
@@ -16589,6 +20615,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "vendor" : {
+                                                   "description" : "The drive's vendor name, up to 8 bytes long.",
+                                                   "format_description" : "vendor",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,8}",
+                                                   "type" : "string"
+                                                },
                                                 "volume" : {
                                                    "alias" : "file"
                                                 },
@@ -16613,7 +20646,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,product=<product>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,vendor=<vendor>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "scsihw" : {
                                              "default" : "lsi",
@@ -16822,9 +20855,17 @@ const apiSchema = [
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
-                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
-                                                   "format" : "pve-qm-usb-device",
+                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n\nEither this or the 'mapping' key must be set.\n",
                                                    "format_description" : "HOSTUSBDEVICE|spice",
+                                                   "optional" : 1,
+                                                   "pattern" : "(?^:(?:(?:(?^:(0x)?([0-9A-Fa-f]{4}):(0x)?([0-9A-Fa-f]{4})))|(?:(?^:(\\d+)\\-(\\d+(\\.\\d+)*)))|[Ss][Pp][Ii][Cc][Ee]))",
+                                                   "type" : "string"
+                                                },
+                                                "mapping" : {
+                                                   "description" : "The ID of a cluster wide mapping. Either this or the default-key 'host' must be set.",
+                                                   "format" : "pve-configid",
+                                                   "format_description" : "mapping-id",
+                                                   "optional" : 1,
                                                    "type" : "string"
                                                 },
                                                 "usb3" : {
@@ -16836,7 +20877,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                                             "typetext" : "[[host=]<HOSTUSBDEVICE|spice>] [,mapping=<mapping-id>] [,usb3=<1|0>]"
                                           },
                                           "vcpus" : {
                                              "default" : 0,
@@ -16849,6 +20890,14 @@ const apiSchema = [
                                           "vga" : {
                                              "description" : "Configure the VGA hardware.",
                                              "format" : {
+                                                "clipboard" : {
+                                                   "description" : "Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Migration with VNC clipboard is not yet supported!",
+                                                   "enum" : [
+                                                      "vnc"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "memory" : {
                                                    "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
                                                    "maximum" : 512,
@@ -16882,7 +20931,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                                             "typetext" : "[[type=]<enum>] [,clipboard=<vnc>] [,memory=<integer>]",
                                              "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                                           },
                                           "virtio[n]" : {
@@ -17220,16 +21269,18 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vmstatestorage" : {
                                              "description" : "Default storage for VM state volumes/files.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "watchdog" : {
                                              "description" : "Create a virtual hardware watchdog device.",
@@ -17289,12 +21340,18 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "agent" : {
-                                             "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -17316,7 +21373,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                             "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                                           },
                                           "arch" : {
                                              "description" : "Virtual processor architecture. Defaults to the host.",
@@ -17332,7 +21389,7 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>",
-                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n"
+                                             "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -smbios 'type=0,vendor=FOO'\n\nNOTE: this option is for experts only.\n"
                                           },
                                           "audio0" : {
                                              "description" : "Configure a audio device, useful in combination with QXL/Spice.",
@@ -17369,7 +21426,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -17429,6 +21486,13 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string"
                                           },
+                                          "ciupgrade" : {
+                                             "default" : 1,
+                                             "description" : "cloud-init: do an automatic package upgrade after the first boot.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "ciuser" : {
                                              "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
                                              "optional" : 1,
@@ -17492,11 +21556,11 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "efitype" : {
                                                    "default" : "2m",
-                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarch64 (ARM).",
                                                    "enum" : [
                                                       "2m",
                                                       "4m"
@@ -17578,7 +21642,7 @@ const apiSchema = [
                                              "format" : "pve-qm-hostpci",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
+                                             "typetext" : "[[host=]<HOSTPCIID[;HOSTPCIID2...]>] [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mapping=<mapping-id>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
                                              "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
                                           },
                                           "hotplug" : {
@@ -18029,19 +22093,45 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
-                                             "maxLength" : 40,
+                                             "description" : "Specify the QEMU machine.",
+                                             "format" : {
+                                                "type" : {
+                                                   "default_key" : 1,
+                                                   "description" : "Specifies the QEMU machine type.",
+                                                   "format_description" : "machine type",
+                                                   "maxLength" : 40,
+                                                   "optional" : 1,
+                                                   "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                                   "type" : "string"
+                                                },
+                                                "viommu" : {
+                                                   "description" : "Enable and set guest vIOMMU variant (Intel vIOMMU needs q35 to be set as machine type).",
+                                                   "enum" : [
+                                                      "intel",
+                                                      "virtio"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
-                                             "type" : "string"
+                                             "type" : "string",
+                                             "typetext" : "[[type=]<machine type>] [,viommu=<intel|virtio>]"
                                           },
                                           "memory" : {
-                                             "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                             "minimum" : 16,
+                                             "description" : "Memory properties.",
+                                             "format" : {
+                                                "current" : {
+                                                   "default" : 512,
+                                                   "default_key" : 1,
+                                                   "description" : "Current amount of online RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
+                                                   "minimum" : 16,
+                                                   "type" : "integer"
+                                                }
+                                             },
                                              "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (16 - N)"
+                                             "type" : "string",
+                                             "typetext" : "[current=]<integer>"
                                           },
                                           "migrate_downtime" : {
                                              "default" : 0.1,
@@ -18292,7 +22382,7 @@ const apiSchema = [
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022/2025\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 6.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
                                           },
                                           "parallel[n]" : {
                                              "description" : "Map host parallel devices (n is 0 to 2).",
@@ -18918,6 +23008,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "product" : {
+                                                   "description" : "The drive's product name, up to 16 bytes long.",
+                                                   "format_description" : "product",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,16}",
+                                                   "type" : "string"
+                                                },
                                                 "queues" : {
                                                    "description" : "Number of queues.",
                                                    "minimum" : 2,
@@ -18998,6 +23095,13 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "vendor" : {
+                                                   "description" : "The drive's vendor name, up to 8 bytes long.",
+                                                   "format_description" : "vendor",
+                                                   "optional" : 1,
+                                                   "pattern" : "[A-Za-z0-9\\-_\\s]{,8}",
+                                                   "type" : "string"
+                                                },
                                                 "volume" : {
                                                    "alias" : "file"
                                                 },
@@ -19022,7 +23126,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,product=<product>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,vendor=<vendor>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "scsihw" : {
                                              "default" : "lsi",
@@ -19231,9 +23335,17 @@ const apiSchema = [
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
-                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
-                                                   "format" : "pve-qm-usb-device",
+                                                   "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n\nEither this or the 'mapping' key must be set.\n",
                                                    "format_description" : "HOSTUSBDEVICE|spice",
+                                                   "optional" : 1,
+                                                   "pattern" : "(?^:(?:(?:(?^:(0x)?([0-9A-Fa-f]{4}):(0x)?([0-9A-Fa-f]{4})))|(?:(?^:(\\d+)\\-(\\d+(\\.\\d+)*)))|[Ss][Pp][Ii][Cc][Ee]))",
+                                                   "type" : "string"
+                                                },
+                                                "mapping" : {
+                                                   "description" : "The ID of a cluster wide mapping. Either this or the default-key 'host' must be set.",
+                                                   "format" : "pve-configid",
+                                                   "format_description" : "mapping-id",
+                                                   "optional" : 1,
                                                    "type" : "string"
                                                 },
                                                 "usb3" : {
@@ -19245,7 +23357,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                                             "typetext" : "[[host=]<HOSTUSBDEVICE|spice>] [,mapping=<mapping-id>] [,usb3=<1|0>]"
                                           },
                                           "vcpus" : {
                                              "default" : 0,
@@ -19258,6 +23370,14 @@ const apiSchema = [
                                           "vga" : {
                                              "description" : "Configure the VGA hardware.",
                                              "format" : {
+                                                "clipboard" : {
+                                                   "description" : "Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Migration with VNC clipboard is not yet supported!",
+                                                   "enum" : [
+                                                      "vnc"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "memory" : {
                                                    "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
                                                    "maximum" : 512,
@@ -19291,7 +23411,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                                             "typetext" : "[[type=]<enum>] [,clipboard=<vnc>] [,memory=<integer>]",
                                              "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                                           },
                                           "virtio[n]" : {
@@ -19629,16 +23749,18 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vmstatestorage" : {
                                              "description" : "Default storage for VM state volumes/files.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "watchdog" : {
                                              "description" : "Create a virtual hardware watchdog device.",
@@ -19698,9 +23820,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -19779,9 +23902,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -19823,9 +23947,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -19842,16 +23967,23 @@ const apiSchema = [
                                     "returns" : {
                                        "items" : {
                                           "properties" : {
+                                             "delete" : {
+                                                "description" : "Indicates a pending delete request if present and not 0. ",
+                                                "maximum" : 1,
+                                                "minimum" : 0,
+                                                "optional" : 1,
+                                                "type" : "integer"
+                                             },
                                              "key" : {
                                                 "description" : "Configuration option name.",
                                                 "type" : "string"
                                              },
-                                             "new" : {
+                                             "pending" : {
                                                 "description" : "The new pending value.",
                                                 "optional" : 1,
                                                 "type" : "string"
                                              },
-                                             "old" : {
+                                             "value" : {
                                                 "description" : "Value as it was used to generate the current cloudinit image.",
                                                 "optional" : 1,
                                                 "type" : "string"
@@ -19879,9 +24011,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -19889,7 +24022,9 @@ const apiSchema = [
                                        "check" : [
                                           "perm",
                                           "/vms/{vmid}",
-                                          "VM.Config.Cloudinit"
+                                          [
+                                             "VM.Config.Cloudinit"
+                                          ]
                                        ]
                                     },
                                     "protected" : 1,
@@ -19934,9 +24069,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -19986,12 +24122,13 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "websocket" : {
-                                             "description" : "starts websockify instead of vncproxy",
+                                             "description" : "Prepare for websocket upgrade (only required when using serial terminal, otherwise upgrade is always possible).",
                                              "optional" : 1,
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
@@ -20069,9 +24206,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -20134,9 +24272,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vncticket" : {
                                              "description" : "Ticket from previous call to vncproxy.",
@@ -20196,9 +24335,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -20261,9 +24401,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20281,10 +24422,18 @@ const apiSchema = [
                                           "returns" : {
                                              "properties" : {
                                                 "agent" : {
-                                                   "description" : "Qemu GuestAgent enabled in config.",
+                                                   "description" : "QEMU Guest Agent is enabled in config.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 },
+                                                "clipboard" : {
+                                                   "description" : "Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added.",
+                                                   "enum" : [
+                                                      "vnc"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "cpus" : {
                                                    "description" : "Maximum usable CPUs.",
                                                    "optional" : 1,
@@ -20322,7 +24471,7 @@ const apiSchema = [
                                                    "type" : "integer"
                                                 },
                                                 "qmpstatus" : {
-                                                   "description" : "Qemu QMP agent status.",
+                                                   "description" : "VM run state from the 'query-status' QMP monitor command.",
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
@@ -20337,12 +24486,12 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "spice" : {
-                                                   "description" : "Qemu VGA configuration supports spice.",
+                                                   "description" : "QEMU VGA configuration supports spice.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "status" : {
-                                                   "description" : "Qemu process status.",
+                                                   "description" : "QEMU process status.",
                                                    "enum" : [
                                                       "stopped",
                                                       "running"
@@ -20363,7 +24512,8 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer"
                                                 }
                                              },
@@ -20392,11 +24542,30 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "machine" : {
-                                                   "description" : "Specifies the Qemu machine type.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Specify the QEMU machine.",
+                                                   "format" : {
+                                                      "type" : {
+                                                         "default_key" : 1,
+                                                         "description" : "Specifies the QEMU machine type.",
+                                                         "format_description" : "machine type",
+                                                         "maxLength" : 40,
+                                                         "optional" : 1,
+                                                         "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                                         "type" : "string"
+                                                      },
+                                                      "viommu" : {
+                                                         "description" : "Enable and set guest vIOMMU variant (Intel vIOMMU needs q35 to be set as machine type).",
+                                                         "enum" : [
+                                                            "intel",
+                                                            "virtio"
+                                                         ],
+                                                         "optional" : 1,
+                                                         "type" : "string"
+                                                      }
+                                                   },
                                                    "optional" : 1,
-                                                   "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
-                                                   "type" : "string"
+                                                   "type" : "string",
+                                                   "typetext" : "[[type=]<machine type>] [,viommu=<intel|virtio>]"
                                                 },
                                                 "migratedfrom" : {
                                                    "description" : "The cluster node name.",
@@ -20458,9 +24627,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20488,7 +24658,7 @@ const apiSchema = [
                                     "info" : {
                                        "POST" : {
                                           "allowtoken" : 1,
-                                          "description" : "Stop virtual machine. The qemu process will exit immediately. Thisis akin to pulling the power plug of a running computer and may damage the VM data",
+                                          "description" : "Stop virtual machine. The qemu process will exit immediately. This is akin to pulling the power plug of a running computer and may damage the VM data.",
                                           "method" : "POST",
                                           "name" : "vm_stop",
                                           "parameters" : {
@@ -20514,6 +24684,13 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "overrule-shutdown" : {
+                                                   "default" : 0,
+                                                   "description" : "Try to abort active 'qmshutdown' tasks before stopping.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
                                                 "skiplock" : {
                                                    "description" : "Ignore locks - only root is allowed to use this option.",
                                                    "optional" : 1,
@@ -20530,9 +24707,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20581,9 +24759,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20611,7 +24790,7 @@ const apiSchema = [
                                     "info" : {
                                        "POST" : {
                                           "allowtoken" : 1,
-                                          "description" : "Shutdown virtual machine. This is similar to pressing the power button on a physical machine.This will send an ACPI event for the guest OS, which should then proceed to a clean shutdown.",
+                                          "description" : "Shutdown virtual machine. This is similar to pressing the power button on a physical machine. This will send an ACPI event for the guest OS, which should then proceed to a clean shutdown.",
                                           "method" : "POST",
                                           "name" : "vm_shutdown",
                                           "parameters" : {
@@ -20653,9 +24832,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20705,9 +24885,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20756,10 +24937,11 @@ const apiSchema = [
                                                 "statestorage" : {
                                                    "description" : "The storage for the VM state",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "optional" : 1,
                                                    "requires" : "todisk",
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "todisk" : {
                                                    "default" : 0,
@@ -20771,9 +24953,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20828,9 +25011,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -20873,9 +25057,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -20936,9 +25121,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -20998,9 +25184,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -21085,9 +25272,10 @@ const apiSchema = [
                                           "newid" : {
                                              "description" : "VMID for the clone.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -21113,9 +25301,10 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target storage for full clone.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "target" : {
                                              "description" : "Target node. Only allowed if the original VM is on shared storage.",
@@ -21127,9 +25316,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -21163,7 +25353,7 @@ const apiSchema = [
                                              ]
                                           ]
                                        ],
-                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
+                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage and 'SDN.Use' on any used bridge/vnet"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -21548,9 +25738,10 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target storage.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "target-digest" : {
                                              "description" : "Prevent changes if the current config file of the target VM has a\"\n\t\t    .\" different SHA1 digest. This can be used to detect concurrent modifications.",
@@ -21884,17 +26075,19 @@ const apiSchema = [
                                           "target-vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -21946,9 +26139,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -21978,6 +26172,10 @@ const apiSchema = [
                                              "description" : "List local resources e.g. pci, usb",
                                              "type" : "array"
                                           },
+                                          "mapped-resources" : {
+                                             "description" : "List of mapped resources e.g. pci, usb",
+                                             "type" : "array"
+                                          },
                                           "not_allowed_nodes" : {
                                              "description" : "List not allowed nodes with additional informations, only passed if VM is offline",
                                              "optional" : 1,
@@ -22056,9 +26254,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "with-local-disks" : {
                                              "description" : "Enable live storage migration for local disk",
@@ -22136,7 +26335,7 @@ const apiSchema = [
                                              "description" : "Remote target endpoint",
                                              "format" : "proxmox-remote",
                                              "type" : "string",
-                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                             "typetext" : "apitoken=<PVEAPIToken=user@realm!token=SECRET> ,host=<ADDRESS> [,fingerprint=<FINGERPRINT>] [,port=<PORT>]"
                                           },
                                           "target-storage" : {
                                              "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
@@ -22148,17 +26347,19 @@ const apiSchema = [
                                           "target-vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -22187,7 +26388,7 @@ const apiSchema = [
                               "info" : {
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Execute Qemu monitor commands.",
+                                    "description" : "Execute QEMU monitor commands.",
                                     "method" : "POST",
                                     "name" : "monitor",
                                     "parameters" : {
@@ -22207,9 +26408,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -22336,9 +26538,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -22354,7 +26557,8 @@ const apiSchema = [
                                     "protected" : 1,
                                     "proxyto" : "node",
                                     "returns" : {
-                                       "type" : "null"
+                                       "description" : "the task ID.",
+                                       "type" : "string"
                                     }
                                  }
                               },
@@ -22392,9 +26596,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -22446,9 +26651,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -22497,7 +26703,7 @@ const apiSchema = [
                                                       },
                                                       "start" : {
                                                          "default" : 0,
-                                                         "description" : "Whether the VM should get started after rolling back successfully",
+                                                         "description" : "Whether the VM should get started after rolling back successfully. (Note: VMs will be automatically started if the snapshot includes RAM.)",
                                                          "optional" : 1,
                                                          "type" : "boolean",
                                                          "typetext" : "<boolean>"
@@ -22505,9 +26711,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -22567,9 +26774,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -22613,9 +26821,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -22660,9 +26869,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -22746,9 +26956,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vmstate" : {
                                              "description" : "Save the vmstate",
@@ -22864,9 +27075,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -22925,9 +27137,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -23001,9 +27214,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -23068,9 +27282,10 @@ const apiSchema = [
                                     "vmid" : {
                                        "description" : "The (unique) ID of the VM.",
                                        "format" : "pve-vmid",
-                                       "minimum" : 1,
+                                       "maximum" : 999999999,
+                                       "minimum" : 100,
                                        "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
+                                       "typetext" : "<integer> (100 - 999999999)"
                                     }
                                  }
                               },
@@ -23106,9 +27321,10 @@ const apiSchema = [
                                     "vmid" : {
                                        "description" : "The (unique) ID of the VM.",
                                        "format" : "pve-vmid",
-                                       "minimum" : 1,
+                                       "maximum" : 999999999,
+                                       "minimum" : 100,
                                        "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
+                                       "typetext" : "<integer> (100 - 999999999)"
                                     }
                                  }
                               },
@@ -23205,7 +27421,7 @@ const apiSchema = [
                                     "type" : "integer"
                                  },
                                  "qmpstatus" : {
-                                    "description" : "Qemu QMP agent status.",
+                                    "description" : "VM run state from the 'query-status' QMP monitor command.",
                                     "optional" : 1,
                                     "type" : "string"
                                  },
@@ -23220,7 +27436,7 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "status" : {
-                                    "description" : "Qemu process status.",
+                                    "description" : "QEMU process status.",
                                     "enum" : [
                                        "stopped",
                                        "running"
@@ -23241,7 +27457,8 @@ const apiSchema = [
                                  "vmid" : {
                                     "description" : "The (unique) ID of the VM.",
                                     "format" : "pve-vmid",
-                                    "minimum" : 1,
+                                    "maximum" : 999999999,
+                                    "minimum" : 100,
                                     "type" : "integer"
                                  }
                               },
@@ -23279,12 +27496,18 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "agent" : {
-                                 "description" : "Enable/disable communication with the Qemu Guest Agent and its properties.",
+                                 "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                  "format" : {
                                     "enabled" : {
                                        "default" : 0,
                                        "default_key" : 1,
-                                       "description" : "Enable/disable communication with a Qemu Guest Agent (QGA) running in the VM.",
+                                       "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                       "type" : "boolean"
+                                    },
+                                    "freeze-fs-on-backup" : {
+                                       "default" : 1,
+                                       "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                       "optional" : 1,
                                        "type" : "boolean"
                                     },
                                     "fstrim_cloned_disks" : {
@@ -23306,7 +27529,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                 "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                               },
                               "arch" : {
                                  "description" : "Virtual processor architecture. Defaults to the host.",
@@ -23329,7 +27552,7 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>",
-                                 "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n"
+                                 "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -smbios 'type=0,vendor=FOO'\n\nNOTE: this option is for experts only.\n"
                               },
                               "audio0" : {
                                  "description" : "Configure a audio device, useful in combination with QXL/Spice.",
@@ -23366,7 +27589,7 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "balloon" : {
-                                 "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                 "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -23434,6 +27657,13 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "string"
                               },
+                              "ciupgrade" : {
+                                 "default" : 1,
+                                 "description" : "cloud-init: do an automatic package upgrade after the first boot.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "ciuser" : {
                                  "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.",
                                  "optional" : 1,
@@ -23483,11 +27713,11 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "efidisk0" : {
-                                 "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                 "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                  "format" : {
                                     "efitype" : {
                                        "default" : "2m",
-                                       "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified.",
+                                       "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarch64 (ARM).",
                                        "enum" : [
                                           "2m",
                                           "4m"
@@ -23569,7 +27799,7 @@ const apiSchema = [
                                  "format" : "pve-qm-hostpci",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
+                                 "typetext" : "[[host=]<HOSTPCIID[;HOSTPCIID2...]>] [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mapping=<mapping-id>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
                                  "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
                               },
                               "hotplug" : {
@@ -23998,9 +28228,8 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "live-restore" : {
-                                 "description" : "Start the VM immediately from the backup and restore in background. PBS only.",
+                                 "description" : "Start the VM immediately while importing or restoring in the background.",
                                  "optional" : 1,
-                                 "requires" : "archive",
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
@@ -24027,19 +28256,45 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "machine" : {
-                                 "description" : "Specifies the Qemu machine type.",
-                                 "maxLength" : 40,
+                                 "description" : "Specify the QEMU machine.",
+                                 "format" : {
+                                    "type" : {
+                                       "default_key" : 1,
+                                       "description" : "Specifies the QEMU machine type.",
+                                       "format_description" : "machine type",
+                                       "maxLength" : 40,
+                                       "optional" : 1,
+                                       "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
+                                       "type" : "string"
+                                    },
+                                    "viommu" : {
+                                       "description" : "Enable and set guest vIOMMU variant (Intel vIOMMU needs q35 to be set as machine type).",
+                                       "enum" : [
+                                          "intel",
+                                          "virtio"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
                                  "optional" : 1,
-                                 "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "typetext" : "[[type=]<machine type>] [,viommu=<intel|virtio>]"
                               },
                               "memory" : {
-                                 "default" : 512,
-                                 "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
-                                 "minimum" : 16,
+                                 "description" : "Memory properties.",
+                                 "format" : {
+                                    "current" : {
+                                       "default" : 512,
+                                       "default_key" : 1,
+                                       "description" : "Current amount of online RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
+                                       "minimum" : 16,
+                                       "type" : "integer"
+                                    }
+                                 },
                                  "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (16 - N)"
+                                 "type" : "string",
+                                 "typetext" : "[current=]<integer>"
                               },
                               "migrate_downtime" : {
                                  "default" : 0.1,
@@ -24290,7 +28545,7 @@ const apiSchema = [
                                  ],
                                  "optional" : 1,
                                  "type" : "string",
-                                 "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                 "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022/2025\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 6.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
                               },
                               "parallel[n]" : {
                                  "description" : "Map host parallel devices (n is 0 to 2).",
@@ -24916,6 +29171,13 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "product" : {
+                                       "description" : "The drive's product name, up to 16 bytes long.",
+                                       "format_description" : "product",
+                                       "optional" : 1,
+                                       "pattern" : "[A-Za-z0-9\\-_\\s]{,16}",
+                                       "type" : "string"
+                                    },
                                     "queues" : {
                                        "description" : "Number of queues.",
                                        "minimum" : 2,
@@ -24996,6 +29258,13 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "vendor" : {
+                                       "description" : "The drive's vendor name, up to 8 bytes long.",
+                                       "format_description" : "vendor",
+                                       "optional" : 1,
+                                       "pattern" : "[A-Za-z0-9\\-_\\s]{,8}",
+                                       "type" : "string"
+                                    },
                                     "volume" : {
                                        "alias" : "file"
                                     },
@@ -25020,7 +29289,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,product=<product>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,vendor=<vendor>] [,werror=<enum>] [,wwn=<wwn>]"
                               },
                               "scsihw" : {
                                  "default" : "lsi",
@@ -25139,9 +29408,10 @@ const apiSchema = [
                               "storage" : {
                                  "description" : "Default storage.",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "tablet" : {
                                  "default" : 1,
@@ -25244,9 +29514,17 @@ const apiSchema = [
                                  "format" : {
                                     "host" : {
                                        "default_key" : 1,
-                                       "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n",
-                                       "format" : "pve-qm-usb-device",
+                                       "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n\nEither this or the 'mapping' key must be set.\n",
                                        "format_description" : "HOSTUSBDEVICE|spice",
+                                       "optional" : 1,
+                                       "pattern" : "(?^:(?:(?:(?^:(0x)?([0-9A-Fa-f]{4}):(0x)?([0-9A-Fa-f]{4})))|(?:(?^:(\\d+)\\-(\\d+(\\.\\d+)*)))|[Ss][Pp][Ii][Cc][Ee]))",
+                                       "type" : "string"
+                                    },
+                                    "mapping" : {
+                                       "description" : "The ID of a cluster wide mapping. Either this or the default-key 'host' must be set.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "mapping-id",
+                                       "optional" : 1,
                                        "type" : "string"
                                     },
                                     "usb3" : {
@@ -25258,7 +29536,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[host=]<HOSTUSBDEVICE|spice> [,usb3=<1|0>]"
+                                 "typetext" : "[[host=]<HOSTUSBDEVICE|spice>] [,mapping=<mapping-id>] [,usb3=<1|0>]"
                               },
                               "vcpus" : {
                                  "default" : 0,
@@ -25271,6 +29549,14 @@ const apiSchema = [
                               "vga" : {
                                  "description" : "Configure the VGA hardware.",
                                  "format" : {
+                                    "clipboard" : {
+                                       "description" : "Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Migration with VNC clipboard is not yet supported!",
+                                       "enum" : [
+                                          "vnc"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "memory" : {
                                        "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.",
                                        "maximum" : 512,
@@ -25304,7 +29590,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[[type=]<enum>] [,memory=<integer>]",
+                                 "typetext" : "[[type=]<enum>] [,clipboard=<vnc>] [,memory=<integer>]",
                                  "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                               },
                               "virtio[n]" : {
@@ -25642,16 +29928,18 @@ const apiSchema = [
                               "vmid" : {
                                  "description" : "The (unique) ID of the VM.",
                                  "format" : "pve-vmid",
-                                 "minimum" : 1,
+                                 "maximum" : 999999999,
+                                 "minimum" : 100,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
+                                 "typetext" : "<integer> (100 - 999999999)"
                               },
                               "vmstatestorage" : {
                                  "description" : "Default storage for VM state volumes/files.",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "watchdog" : {
                                  "description" : "Create a virtual hardware watchdog device.",
@@ -25664,7 +29952,7 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.",
+                           "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.If you use a bridge/vlan, you need 'SDN.Use' on any used bridge/vlan.",
                            "user" : "all"
                         },
                         "protected" : 1,
@@ -25716,9 +30004,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -25741,7 +30030,9 @@ const apiSchema = [
                                                 "amd64",
                                                 "i386",
                                                 "arm64",
-                                                "armhf"
+                                                "armhf",
+                                                "riscv32",
+                                                "riscv64"
                                              ],
                                              "optional" : 1,
                                              "type" : "string"
@@ -25799,6 +30090,41 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "string"
                                           },
+                                          "dev[n]" : {
+                                             "description" : "Device to pass through to the container",
+                                             "format" : {
+                                                "gid" : {
+                                                   "description" : "Group ID to be assigned to the device node",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "mode" : {
+                                                   "description" : "Access mode to be set on the device node",
+                                                   "format_description" : "Octal access mode",
+                                                   "optional" : 1,
+                                                   "pattern" : "0[0-7]{3}",
+                                                   "type" : "string"
+                                                },
+                                                "path" : {
+                                                   "default_key" : 1,
+                                                   "description" : "Device to pass through to the container",
+                                                   "format" : "pve-lxc-dev-string",
+                                                   "format_description" : "Path",
+                                                   "optional" : 1,
+                                                   "type" : "string",
+                                                   "verbose_description" : "Path to the device to pass through to the container"
+                                                },
+                                                "uid" : {
+                                                   "description" : "User ID to be assigned to the device node",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
                                           "digest" : {
                                              "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.",
                                              "type" : "string"
@@ -26021,6 +30347,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "link_down" : {
+                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "mtu" : {
                                                    "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
                                                    "maximum" : 65535,
@@ -26237,7 +30568,9 @@ const apiSchema = [
                                                 "amd64",
                                                 "i386",
                                                 "arm64",
-                                                "armhf"
+                                                "armhf",
+                                                "riscv32",
+                                                "riscv64"
                                              ],
                                              "optional" : 1,
                                              "type" : "string"
@@ -26308,6 +30641,42 @@ const apiSchema = [
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "dev[n]" : {
+                                             "description" : "Device to pass through to the container",
+                                             "format" : {
+                                                "gid" : {
+                                                   "description" : "Group ID to be assigned to the device node",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "mode" : {
+                                                   "description" : "Access mode to be set on the device node",
+                                                   "format_description" : "Octal access mode",
+                                                   "optional" : 1,
+                                                   "pattern" : "0[0-7]{3}",
+                                                   "type" : "string"
+                                                },
+                                                "path" : {
+                                                   "default_key" : 1,
+                                                   "description" : "Device to pass through to the container",
+                                                   "format" : "pve-lxc-dev-string",
+                                                   "format_description" : "Path",
+                                                   "optional" : 1,
+                                                   "type" : "string",
+                                                   "verbose_description" : "Path to the device to pass through to the container"
+                                                },
+                                                "uid" : {
+                                                   "description" : "User ID to be assigned to the device node",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[[path=]<Path>] [,gid=<integer>] [,mode=<Octal access mode>] [,uid=<integer>]"
+                                          },
                                           "digest" : {
                                              "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
                                              "maxLength" : 40,
@@ -26528,6 +30897,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "link_down" : {
+                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "mtu" : {
                                                    "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
                                                    "maximum" : 65535,
@@ -26572,7 +30946,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                                             "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,link_down=<1|0>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -26753,9 +31127,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -26807,9 +31182,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -26885,7 +31261,8 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer"
                                                 }
                                              },
@@ -26929,9 +31306,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -26971,6 +31349,13 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "overrule-shutdown" : {
+                                                   "default" : 0,
+                                                   "description" : "Try to abort active 'vzshutdown' tasks before stopping.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
                                                 "skiplock" : {
                                                    "description" : "Ignore locks - only root is allowed to use this option.",
                                                    "optional" : 1,
@@ -26980,9 +31365,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27040,9 +31426,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27085,9 +31472,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27130,9 +31518,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27182,9 +31571,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27227,9 +31617,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -27297,9 +31688,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -27353,9 +31745,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -27407,9 +31800,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -27465,9 +31859,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27511,9 +31906,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -27558,9 +31954,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -27639,9 +32036,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -27681,8 +32079,8 @@ const apiSchema = [
                                                    "additionalProperties" : 0,
                                                    "properties" : {
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -27703,9 +32101,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -27748,9 +32147,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -27877,8 +32277,8 @@ const apiSchema = [
                                                          "typetext" : "<string>"
                                                       },
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -27898,7 +32298,7 @@ const apiSchema = [
                                                          "typetext" : "<integer> (0 - N)"
                                                       },
                                                       "icmp-type" : {
-                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                          "format" : "pve-fw-icmp-type-spec",
                                                          "optional" : 1,
                                                          "type" : "string",
@@ -27991,9 +32391,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28036,9 +32437,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -28101,8 +32503,8 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -28122,7 +32524,7 @@ const apiSchema = [
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
                                                 "icmp-type" : {
-                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                    "format" : "pve-fw-icmp-type-spec",
                                                    "optional" : 1,
                                                    "type" : "string",
@@ -28208,9 +32610,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -28247,8 +32650,8 @@ const apiSchema = [
                                                    "additionalProperties" : 0,
                                                    "properties" : {
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -28269,9 +32672,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28313,9 +32717,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28352,8 +32757,8 @@ const apiSchema = [
                                                          "typetext" : "<string>"
                                                       },
                                                       "digest" : {
-                                                         "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                         "maxLength" : 40,
+                                                         "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                         "maxLength" : 64,
                                                          "optional" : 1,
                                                          "type" : "string",
                                                          "typetext" : "<string>"
@@ -28382,9 +32787,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28426,9 +32832,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -28452,8 +32859,8 @@ const apiSchema = [
                                                       "type" : "string"
                                                    },
                                                    "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
+                                                      "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                      "maxLength" : 64,
                                                       "optional" : 0,
                                                       "type" : "string"
                                                    },
@@ -28507,9 +32914,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -28553,8 +32961,8 @@ const apiSchema = [
                                                                "typetext" : "<string>"
                                                             },
                                                             "digest" : {
-                                                               "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                               "maxLength" : 40,
+                                                               "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                               "maxLength" : 64,
                                                                "optional" : 1,
                                                                "type" : "string",
                                                                "typetext" : "<string>"
@@ -28575,9 +32983,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -28625,9 +33034,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -28665,8 +33075,8 @@ const apiSchema = [
                                                                "typetext" : "<string>"
                                                             },
                                                             "digest" : {
-                                                               "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                               "maxLength" : 40,
+                                                               "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                               "maxLength" : 64,
                                                                "optional" : 1,
                                                                "type" : "string",
                                                                "typetext" : "<string>"
@@ -28692,9 +33102,10 @@ const apiSchema = [
                                                             "vmid" : {
                                                                "description" : "The (unique) ID of the VM.",
                                                                "format" : "pve-vmid",
-                                                               "minimum" : 1,
+                                                               "maximum" : 999999999,
+                                                               "minimum" : 100,
                                                                "type" : "integer",
-                                                               "typetext" : "<integer> (1 - N)"
+                                                               "typetext" : "<integer> (100 - 999999999)"
                                                             }
                                                          }
                                                       },
@@ -28749,9 +33160,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28793,9 +33205,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28819,8 +33232,8 @@ const apiSchema = [
                                                             "type" : "string"
                                                          },
                                                          "digest" : {
-                                                            "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                            "maxLength" : 40,
+                                                            "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                            "maxLength" : 64,
                                                             "optional" : 0,
                                                             "type" : "string"
                                                          },
@@ -28880,9 +33293,10 @@ const apiSchema = [
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
-                                                         "minimum" : 1,
+                                                         "maximum" : 999999999,
+                                                         "minimum" : 100,
                                                          "type" : "integer",
-                                                         "typetext" : "<integer> (1 - N)"
+                                                         "typetext" : "<integer> (100 - 999999999)"
                                                       }
                                                    }
                                                 },
@@ -28924,9 +33338,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -28947,8 +33362,8 @@ const apiSchema = [
                                                       "type" : "string"
                                                    },
                                                    "digest" : {
-                                                      "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                      "maxLength" : 40,
+                                                      "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                      "maxLength" : 64,
                                                       "optional" : 0,
                                                       "type" : "string"
                                                    },
@@ -28985,8 +33400,8 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -29015,9 +33430,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -29059,9 +33475,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -29190,8 +33607,8 @@ const apiSchema = [
                                                    "typetext" : "<boolean>"
                                                 },
                                                 "digest" : {
-                                                   "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                                   "maxLength" : 40,
+                                                   "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                                   "maxLength" : 64,
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -29290,9 +33707,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -29338,18 +33756,33 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "since" : {
+                                                   "description" : "Display log since this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "start" : {
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer",
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
+                                                "until" : {
+                                                   "description" : "Display log until this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -29414,9 +33847,10 @@ const apiSchema = [
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
-                                                   "minimum" : 1,
+                                                   "maximum" : 999999999,
+                                                   "minimum" : 100,
                                                    "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
+                                                   "typetext" : "<integer> (100 - 999999999)"
                                                 }
                                              }
                                           },
@@ -29439,6 +33873,12 @@ const apiSchema = [
                                                    "name" : {
                                                       "type" : "string"
                                                    },
+                                                   "ref" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "scope" : {
+                                                      "type" : "string"
+                                                   },
                                                    "type" : {
                                                       "enum" : [
                                                          "alias",
@@ -29476,9 +33916,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -29549,9 +33990,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -29618,9 +34060,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -29674,9 +34117,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "websocket" : {
                                              "description" : "use websocket instead of standard VNC.",
@@ -29749,9 +34193,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -29814,9 +34259,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "vncticket" : {
                                              "description" : "Ticket from previous call to vncproxy.",
@@ -29876,9 +34322,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -29973,7 +34420,7 @@ const apiSchema = [
                                              "description" : "Remote target endpoint",
                                              "format" : "proxmox-remote",
                                              "type" : "string",
-                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                             "typetext" : "apitoken=<PVEAPIToken=user@realm!token=SECRET> ,host=<ADDRESS> [,fingerprint=<FINGERPRINT>] [,port=<PORT>]"
                                           },
                                           "target-storage" : {
                                              "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
@@ -29985,10 +34432,11 @@ const apiSchema = [
                                           "target-vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "timeout" : {
                                              "default" : 180,
@@ -30000,9 +34448,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30086,9 +34535,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30149,9 +34599,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30199,9 +34650,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30266,9 +34718,10 @@ const apiSchema = [
                                           "newid" : {
                                              "description" : "VMID for the clone.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -30294,9 +34747,10 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target storage for full clone.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "target" : {
                                              "description" : "Target node. Only allowed if the original VM is on shared storage.",
@@ -30308,9 +34762,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30344,7 +34799,7 @@ const apiSchema = [
                                              ]
                                           ]
                                        ],
-                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage."
+                                       "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage, and 'SDN.Use' on any bridge."
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -30651,9 +35106,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -30721,9 +35177,10 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target Storage.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "target-digest" : {
                                              "description" : "Prevent changes if current configuration file of the target \" .\n\t\t    \"container has a different SHA1 digest. This can be used to prevent \" .\n\t\t    \"concurrent modifications.",
@@ -30735,10 +35192,11 @@ const apiSchema = [
                                           "target-vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "target-volume" : {
                                              "description" : "The config key the volume will be moved to. Default is the source volume key.",
@@ -31263,9 +35721,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           },
                                           "volume" : {
                                              "description" : "Volume which will be moved.",
@@ -31828,9 +36287,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -31879,6 +36339,76 @@ const apiSchema = [
                               "path" : "/nodes/{node}/lxc/{vmid}/pending",
                               "text" : "pending"
                            },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get IP addresses of the specified container interface.",
+                                    "method" : "GET",
+                                    "name" : "ip",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (100 - 999999999)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/vms/{vmid}",
+                                          [
+                                             "VM.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "hwaddr" : {
+                                                "description" : "The MAC address of the interface",
+                                                "optional" : 0,
+                                                "type" : "string"
+                                             },
+                                             "inet" : {
+                                                "description" : "The IPv4 address of the interface",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "inet6" : {
+                                                "description" : "The IPv6 address of the interface",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "name" : {
+                                                "description" : "The name of the interface",
+                                                "optional" : 0,
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/lxc/{vmid}/interfaces",
+                              "text" : "interfaces"
+                           },
                            {
                               "info" : {
                                  "POST" : {
@@ -31912,9 +36442,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -31988,9 +36519,10 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -32056,9 +36588,10 @@ const apiSchema = [
                                     "vmid" : {
                                        "description" : "The (unique) ID of the VM.",
                                        "format" : "pve-vmid",
-                                       "minimum" : 1,
+                                       "maximum" : 999999999,
+                                       "minimum" : 100,
                                        "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
+                                       "typetext" : "<integer> (100 - 999999999)"
                                     }
                                  }
                               },
@@ -32094,9 +36627,10 @@ const apiSchema = [
                                     "vmid" : {
                                        "description" : "The (unique) ID of the VM.",
                                        "format" : "pve-vmid",
-                                       "minimum" : 1,
+                                       "maximum" : 999999999,
+                                       "minimum" : 100,
                                        "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
+                                       "typetext" : "<integer> (100 - 999999999)"
                                     }
                                  }
                               },
@@ -32209,7 +36743,8 @@ const apiSchema = [
                                  "vmid" : {
                                     "description" : "The (unique) ID of the VM.",
                                     "format" : "pve-vmid",
-                                    "minimum" : 1,
+                                    "maximum" : 999999999,
+                                    "minimum" : 100,
                                     "type" : "integer"
                                  }
                               },
@@ -32239,7 +36774,9 @@ const apiSchema = [
                                     "amd64",
                                     "i386",
                                     "arm64",
-                                    "armhf"
+                                    "armhf",
+                                    "riscv32",
+                                    "riscv64"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -32311,6 +36848,42 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "dev[n]" : {
+                                 "description" : "Device to pass through to the container",
+                                 "format" : {
+                                    "gid" : {
+                                       "description" : "Group ID to be assigned to the device node",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "mode" : {
+                                       "description" : "Access mode to be set on the device node",
+                                       "format_description" : "Octal access mode",
+                                       "optional" : 1,
+                                       "pattern" : "0[0-7]{3}",
+                                       "type" : "string"
+                                    },
+                                    "path" : {
+                                       "default_key" : 1,
+                                       "description" : "Device to pass through to the container",
+                                       "format" : "pve-lxc-dev-string",
+                                       "format_description" : "Path",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "verbose_description" : "Path to the device to pass through to the container"
+                                    },
+                                    "uid" : {
+                                       "description" : "User ID to be assigned to the device node",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[[path=]<Path>] [,gid=<integer>] [,mode=<Octal access mode>] [,uid=<integer>]"
+                              },
                               "features" : {
                                  "description" : "Allow containers access to advanced features.",
                                  "format" : {
@@ -32536,6 +37109,11 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "link_down" : {
+                                       "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "mtu" : {
                                        "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
                                        "maximum" : 65535,
@@ -32580,7 +37158,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                                 "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,link_down=<1|0>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -32734,9 +37312,10 @@ const apiSchema = [
                                  "default" : "local",
                                  "description" : "Default Storage.",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "swap" : {
                                  "default" : 512,
@@ -32808,9 +37387,10 @@ const apiSchema = [
                               "vmid" : {
                                  "description" : "The (unique) ID of the VM.",
                                  "format" : "pve-vmid",
-                                 "minimum" : 1,
+                                 "maximum" : 999999999,
+                                 "minimum" : 100,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
+                                 "typetext" : "<integer> (100 - 999999999)"
                               }
                            }
                         },
@@ -32831,10 +37411,418 @@ const apiSchema = [
                },
                {
                   "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the Ceph configuration file.",
+                                    "method" : "GET",
+                                    "name" : "raw",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit",
+                                             "Datastore.Audit"
+                                          ],
+                                          "any",
+                                          1
+                                       ]
+                                    },
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/cfg/raw",
+                              "text" : "raw"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the Ceph configuration database.",
+                                    "method" : "GET",
+                                    "name" : "db",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit",
+                                             "Datastore.Audit"
+                                          ],
+                                          "any",
+                                          1
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "can_update_at_runtime" : {
+                                                "type" : "boolean"
+                                             },
+                                             "level" : {
+                                                "type" : "string"
+                                             },
+                                             "mask" : {
+                                                "type" : "string"
+                                             },
+                                             "name" : {
+                                                "type" : "string"
+                                             },
+                                             "section" : {
+                                                "type" : "string"
+                                             },
+                                             "value" : {
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/cfg/db",
+                              "text" : "db"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get configured values from either the config file or config DB.",
+                                    "method" : "GET",
+                                    "name" : "value",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "config-keys" : {
+                                             "description" : "List of <section>:<config key> items.",
+                                             "pattern" : "(?^:^(:?(?^i:[0-9a-z\\-_\\.]+:[0-9a-zA-Z\\-_]+))(:?[;, ](?^i:[0-9a-z\\-_\\.]+:[0-9a-zA-Z\\-_]+))*$)",
+                                             "type" : "string",
+                                             "typetext" : "<section>:<config key>[;<section>:<config key>]"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "description" : "Contains {section}->{key} children with the values",
+                                       "type" : "object"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/cfg/value",
+                              "text" : "value"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Directory index.",
+                              "method" : "GET",
+                              "name" : "index",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "user" : "all"
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/cfg",
+                        "text" : "cfg"
+                     },
                      {
                         "children" : [
                            {
                               "children" : [
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get OSD details",
+                                          "method" : "GET",
+                                          "name" : "osddetails",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "osdid" : {
+                                                   "description" : "OSD ID",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "devices" : {
+                                                   "description" : "Array containing data about devices",
+                                                   "items" : {
+                                                      "properties" : {
+                                                         "dev_node" : {
+                                                            "description" : "Device node",
+                                                            "type" : "string"
+                                                         },
+                                                         "device" : {
+                                                            "description" : "Kind of OSD device",
+                                                            "enum" : [
+                                                               "block",
+                                                               "db",
+                                                               "wal"
+                                                            ],
+                                                            "type" : "string"
+                                                         },
+                                                         "devices" : {
+                                                            "description" : "Physical disks used",
+                                                            "type" : "string"
+                                                         },
+                                                         "size" : {
+                                                            "description" : "Size in bytes",
+                                                            "type" : "integer"
+                                                         },
+                                                         "support_discard" : {
+                                                            "description" : "Discard support of the physical device",
+                                                            "type" : "boolean"
+                                                         },
+                                                         "type" : {
+                                                            "description" : "Type of device. For example, hdd or ssd",
+                                                            "type" : "string"
+                                                         }
+                                                      },
+                                                      "type" : "object"
+                                                   },
+                                                   "type" : "array"
+                                                },
+                                                "osd" : {
+                                                   "description" : "General information about the OSD",
+                                                   "properties" : {
+                                                      "back_addr" : {
+                                                         "description" : "Address and port used to talk to other OSDs.",
+                                                         "type" : "string"
+                                                      },
+                                                      "front_addr" : {
+                                                         "description" : "Address and port used to talk to clients and monitors.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hb_back_addr" : {
+                                                         "description" : "Heartbeat address and port for other OSDs.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hb_front_addr" : {
+                                                         "description" : "Heartbeat address and port for clients and monitors.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hostname" : {
+                                                         "description" : "Name of the host containing the OSD.",
+                                                         "type" : "string"
+                                                      },
+                                                      "id" : {
+                                                         "description" : "ID of the OSD.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "mem_usage" : {
+                                                         "description" : "Memory usage of the OSD service.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "osd_data" : {
+                                                         "description" : "Path to the OSD's data directory.",
+                                                         "type" : "string"
+                                                      },
+                                                      "osd_objectstore" : {
+                                                         "description" : "The type of object store used.",
+                                                         "type" : "string"
+                                                      },
+                                                      "pid" : {
+                                                         "description" : "OSD process ID.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "version" : {
+                                                         "description" : "Ceph version of the OSD service.",
+                                                         "type" : "string"
+                                                      }
+                                                   },
+                                                   "type" : "object"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/osd/{osdid}/metadata",
+                                    "text" : "metadata"
+                                 },
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get OSD volume details",
+                                          "method" : "GET",
+                                          "name" : "osdvolume",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "osdid" : {
+                                                   "description" : "OSD ID",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                },
+                                                "type" : {
+                                                   "default" : "block",
+                                                   "description" : "OSD device type",
+                                                   "enum" : [
+                                                      "block",
+                                                      "db",
+                                                      "wal"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "creation_time" : {
+                                                   "description" : "Creation time as reported by `lvs`.",
+                                                   "type" : "string"
+                                                },
+                                                "lv_name" : {
+                                                   "description" : "Name of the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "lv_path" : {
+                                                   "description" : "Path to the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "lv_size" : {
+                                                   "description" : "Size of the logical volume (LV).",
+                                                   "type" : "integer"
+                                                },
+                                                "lv_uuid" : {
+                                                   "description" : "UUID of the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "vg_name" : {
+                                                   "description" : "Name of the volume group (VG).",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/osd/{osdid}/lv-info",
+                                    "text" : "lv-info"
+                                 },
                                  {
                                     "info" : {
                                        "POST" : {
@@ -33006,6 +37994,44 @@ const apiSchema = [
                                     "returns" : {
                                        "type" : "string"
                                     }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "OSD index.",
+                                    "method" : "GET",
+                                    "name" : "osdindex",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "osdid" : {
+                                             "description" : "OSD ID",
+                                             "type" : "integer",
+                                             "typetext" : "<integer>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "user" : "all"
+                                    },
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {},
+                                          "type" : "object"
+                                       },
+                                       "links" : [
+                                          {
+                                             "href" : "{name}",
+                                             "rel" : "child"
+                                          }
+                                       ],
+                                       "type" : "array"
+                                    }
                                  }
                               },
                               "leaf" : 0,
@@ -33045,6 +38071,18 @@ const apiSchema = [
                               "protected" : 1,
                               "proxyto" : "node",
                               "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "flags" : {
+                                          "type" : "string"
+                                       },
+                                       "root" : {
+                                          "description" : "Tree with OSDs in the CRUSH map structure.",
+                                          "type" : "object"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
                                  "type" : "object"
                               }
                            },
@@ -33076,7 +38114,7 @@ const apiSchema = [
                                        "requires" : "db_dev",
                                        "type" : "number",
                                        "typetext" : "<number> (1 - N)",
-                                       "verbose_description" : "If a block.db is requested but the size is not given, will be automatically selected by: bluestore_block_db_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 10% of the size of the OSD device. Fails if the available size is not enough."
+                                       "verbose_description" : "If a block.db is requested but the size is not given, will be automatically selected by: bluestore_block_db_size from the ceph database (osd or global section) or config (osd or global section) in that order. If this is not available, it will be sized 10% of the size of the OSD device. Fails if the available size is not enough."
                                     },
                                     "dev" : {
                                        "description" : "Block device name.",
@@ -33096,6 +38134,13 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "osds-per-device" : {
+                                       "description" : "OSD services per physical device. Only useful for fast NVMe devices\"\n\t\t    .\" to utilize their performance better.",
+                                       "minimum" : "1",
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - N)"
+                                    },
                                     "wal_dev" : {
                                        "description" : "Block device name for block.wal.",
                                        "optional" : 1,
@@ -33110,7 +38155,7 @@ const apiSchema = [
                                        "requires" : "wal_dev",
                                        "type" : "number",
                                        "typetext" : "<number> (0.5 - N)",
-                                       "verbose_description" : "If a block.wal is requested but the size is not given, will be automatically selected by: bluestore_block_wal_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 1% of the size of the OSD device. Fails if the available size is not enough."
+                                       "verbose_description" : "If a block.wal is requested but the size is not given, will be automatically selected by: bluestore_block_wal_size from the ceph database (osd or global section) or config (osd or global section) in that order. If this is not available, it will be sized 1% of the size of the OSD device. Fails if the available size is not enough."
                                     }
                                  }
                               },
@@ -33571,12 +38616,40 @@ const apiSchema = [
                                           "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "host" : {
+                                       "ceph_version" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "ceph_version_short" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "direxists" : {
                                           "optional" : 1,
                                           "type" : "string"
                                        },
+                                       "host" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
                                        "name" : {
                                           "type" : "string"
+                                       },
+                                       "quorum" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "rank" : {
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "service" : {
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "state" : {
+                                          "optional" : 1,
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
@@ -33725,6 +38798,204 @@ const apiSchema = [
                      {
                         "children" : [
                            {
+                              "children" : [
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Show the current pool status.",
+                                          "method" : "GET",
+                                          "name" : "getpool",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "name" : {
+                                                   "description" : "The name of the pool. It must be unique.",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "verbose" : {
+                                                   "default" : 0,
+                                                   "description" : "If enabled, will display additional data(eg. statistics).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit",
+                                                   "Datastore.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "application" : {
+                                                   "default" : "rbd",
+                                                   "description" : "The application of the pool.",
+                                                   "enum" : [
+                                                      "rbd",
+                                                      "cephfs",
+                                                      "rgw"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "title" : "Application",
+                                                   "type" : "string"
+                                                },
+                                                "application_list" : {
+                                                   "optional" : 1,
+                                                   "title" : "Application",
+                                                   "type" : "array"
+                                                },
+                                                "autoscale_status" : {
+                                                   "optional" : 1,
+                                                   "title" : "Autoscale Status",
+                                                   "type" : "object"
+                                                },
+                                                "crush_rule" : {
+                                                   "description" : "The rule to use for mapping object placement in the cluster.",
+                                                   "optional" : 1,
+                                                   "title" : "Crush Rule Name",
+                                                   "type" : "string"
+                                                },
+                                                "fast_read" : {
+                                                   "title" : "Fast Read",
+                                                   "type" : "boolean"
+                                                },
+                                                "hashpspool" : {
+                                                   "title" : "hashpspool",
+                                                   "type" : "boolean"
+                                                },
+                                                "id" : {
+                                                   "title" : "ID",
+                                                   "type" : "integer"
+                                                },
+                                                "min_size" : {
+                                                   "default" : 2,
+                                                   "description" : "Minimum number of replicas per object",
+                                                   "maximum" : 7,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "Min Size",
+                                                   "type" : "integer"
+                                                },
+                                                "name" : {
+                                                   "description" : "The name of the pool. It must be unique.",
+                                                   "title" : "Name",
+                                                   "type" : "string"
+                                                },
+                                                "nodeep-scrub" : {
+                                                   "title" : "nodeep-scrub",
+                                                   "type" : "boolean"
+                                                },
+                                                "nodelete" : {
+                                                   "title" : "nodelete",
+                                                   "type" : "boolean"
+                                                },
+                                                "nopgchange" : {
+                                                   "title" : "nopgchange",
+                                                   "type" : "boolean"
+                                                },
+                                                "noscrub" : {
+                                                   "title" : "noscrub",
+                                                   "type" : "boolean"
+                                                },
+                                                "nosizechange" : {
+                                                   "title" : "nosizechange",
+                                                   "type" : "boolean"
+                                                },
+                                                "pg_autoscale_mode" : {
+                                                   "default" : "warn",
+                                                   "description" : "The automatic PG scaling mode of the pool.",
+                                                   "enum" : [
+                                                      "on",
+                                                      "off",
+                                                      "warn"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "title" : "PG Autoscale Mode",
+                                                   "type" : "string"
+                                                },
+                                                "pg_num" : {
+                                                   "default" : 128,
+                                                   "description" : "Number of placement groups.",
+                                                   "maximum" : 32768,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "PG Num",
+                                                   "type" : "integer"
+                                                },
+                                                "pg_num_min" : {
+                                                   "description" : "Minimal number of placement groups.",
+                                                   "maximum" : 32768,
+                                                   "optional" : 1,
+                                                   "title" : "min. PG Num",
+                                                   "type" : "integer"
+                                                },
+                                                "pgp_num" : {
+                                                   "title" : "PGP num",
+                                                   "type" : "integer"
+                                                },
+                                                "size" : {
+                                                   "default" : 3,
+                                                   "description" : "Number of replicas per object",
+                                                   "maximum" : 7,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "Size",
+                                                   "type" : "integer"
+                                                },
+                                                "statistics" : {
+                                                   "optional" : 1,
+                                                   "title" : "Statistics",
+                                                   "type" : "object"
+                                                },
+                                                "target_size" : {
+                                                   "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                                   "optional" : 1,
+                                                   "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+                                                   "title" : "PG Autoscale Target Size",
+                                                   "type" : "string"
+                                                },
+                                                "target_size_ratio" : {
+                                                   "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+                                                   "optional" : 1,
+                                                   "title" : "PG Autoscale Target Ratio",
+                                                   "type" : "number"
+                                                },
+                                                "use_gmt_hitset" : {
+                                                   "title" : "use_gmt_hitset",
+                                                   "type" : "boolean"
+                                                },
+                                                "write_fadvise_dontneed" : {
+                                                   "title" : "write_fadvise_dontneed",
+                                                   "type" : "boolean"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/pool/{name}/status",
+                                    "text" : "status"
+                                 }
+                              ],
                               "info" : {
                                  "DELETE" : {
                                     "allowtoken" : 1,
@@ -33785,14 +39056,14 @@ const apiSchema = [
                                  },
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "List pool settings.",
+                                    "description" : "Pool index.",
                                     "method" : "GET",
-                                    "name" : "getpool",
+                                    "name" : "poolindex",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
                                           "name" : {
-                                             "description" : "The name of the pool. It must be unique.",
+                                             "description" : "The name of the pool.",
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
@@ -33801,13 +39072,6 @@ const apiSchema = [
                                              "format" : "pve-node",
                                              "type" : "string",
                                              "typetext" : "<string>"
-                                          },
-                                          "verbose" : {
-                                             "default" : 0,
-                                             "description" : "If enabled, will display additional data(eg. statistics).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
                                           }
                                        }
                                     },
@@ -33823,153 +39087,18 @@ const apiSchema = [
                                           1
                                        ]
                                     },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
                                     "returns" : {
-                                       "properties" : {
-                                          "application" : {
-                                             "default" : "rbd",
-                                             "description" : "The application of the pool.",
-                                             "enum" : [
-                                                "rbd",
-                                                "cephfs",
-                                                "rgw"
-                                             ],
-                                             "optional" : 1,
-                                             "title" : "Application",
-                                             "type" : "string"
-                                          },
-                                          "application_list" : {
-                                             "optional" : 1,
-                                             "title" : "Application",
-                                             "type" : "array"
-                                          },
-                                          "autoscale_status" : {
-                                             "optional" : 1,
-                                             "title" : "Autoscale Status",
-                                             "type" : "object"
-                                          },
-                                          "crush_rule" : {
-                                             "description" : "The rule to use for mapping object placement in the cluster.",
-                                             "optional" : 1,
-                                             "title" : "Crush Rule Name",
-                                             "type" : "string"
-                                          },
-                                          "fast_read" : {
-                                             "title" : "Fast Read",
-                                             "type" : "boolean"
-                                          },
-                                          "hashpspool" : {
-                                             "title" : "hashpspool",
-                                             "type" : "boolean"
-                                          },
-                                          "id" : {
-                                             "title" : "ID",
-                                             "type" : "integer"
-                                          },
-                                          "min_size" : {
-                                             "default" : 2,
-                                             "description" : "Minimum number of replicas per object",
-                                             "maximum" : 7,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "title" : "Min Size",
-                                             "type" : "integer"
-                                          },
-                                          "name" : {
-                                             "description" : "The name of the pool. It must be unique.",
-                                             "title" : "Name",
-                                             "type" : "string"
-                                          },
-                                          "nodeep-scrub" : {
-                                             "title" : "nodeep-scrub",
-                                             "type" : "boolean"
-                                          },
-                                          "nodelete" : {
-                                             "title" : "nodelete",
-                                             "type" : "boolean"
-                                          },
-                                          "nopgchange" : {
-                                             "title" : "nopgchange",
-                                             "type" : "boolean"
-                                          },
-                                          "noscrub" : {
-                                             "title" : "noscrub",
-                                             "type" : "boolean"
-                                          },
-                                          "nosizechange" : {
-                                             "title" : "nosizechange",
-                                             "type" : "boolean"
-                                          },
-                                          "pg_autoscale_mode" : {
-                                             "default" : "warn",
-                                             "description" : "The automatic PG scaling mode of the pool.",
-                                             "enum" : [
-                                                "on",
-                                                "off",
-                                                "warn"
-                                             ],
-                                             "optional" : 1,
-                                             "title" : "PG Autoscale Mode",
-                                             "type" : "string"
-                                          },
-                                          "pg_num" : {
-                                             "default" : 128,
-                                             "description" : "Number of placement groups.",
-                                             "maximum" : 32768,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "title" : "PG Num",
-                                             "type" : "integer"
-                                          },
-                                          "pg_num_min" : {
-                                             "description" : "Minimal number of placement groups.",
-                                             "maximum" : 32768,
-                                             "optional" : 1,
-                                             "title" : "min. PG Num",
-                                             "type" : "integer"
-                                          },
-                                          "pgp_num" : {
-                                             "title" : "PGP num",
-                                             "type" : "integer"
-                                          },
-                                          "size" : {
-                                             "default" : 3,
-                                             "description" : "Number of replicas per object",
-                                             "maximum" : 7,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "title" : "Size",
-                                             "type" : "integer"
-                                          },
-                                          "statistics" : {
-                                             "optional" : 1,
-                                             "title" : "Statistics",
-                                             "type" : "object"
-                                          },
-                                          "target_size" : {
-                                             "description" : "The estimated target size of the pool for the PG autoscaler.",
-                                             "optional" : 1,
-                                             "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
-                                             "title" : "PG Autoscale Target Size",
-                                             "type" : "string"
-                                          },
-                                          "target_size_ratio" : {
-                                             "description" : "The estimated target ratio of the pool for the PG autoscaler.",
-                                             "optional" : 1,
-                                             "title" : "PG Autoscale Target Ratio",
-                                             "type" : "number"
-                                          },
-                                          "use_gmt_hitset" : {
-                                             "title" : "use_gmt_hitset",
-                                             "type" : "boolean"
-                                          },
-                                          "write_fadvise_dontneed" : {
-                                             "title" : "write_fadvise_dontneed",
-                                             "type" : "boolean"
-                                          }
+                                       "items" : {
+                                          "properties" : {},
+                                          "type" : "object"
                                        },
-                                       "type" : "object"
+                                       "links" : [
+                                          {
+                                             "href" : "{name}",
+                                             "rel" : "child"
+                                          }
+                                       ],
+                                       "type" : "array"
                                     }
                                  },
                                  "PUT" : {
@@ -34088,15 +39217,15 @@ const apiSchema = [
                                     }
                                  }
                               },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/pools/{name}",
+                              "leaf" : 0,
+                              "path" : "/nodes/{node}/ceph/pool/{name}",
                               "text" : "{name}"
                            }
                         ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "List all pools.",
+                              "description" : "List all pools and their settings (which are settable by the POST/PUT endpoints).",
                               "method" : "GET",
                               "name" : "lspools",
                               "parameters" : {
@@ -34385,112 +39514,8 @@ const apiSchema = [
                            }
                         },
                         "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/pools",
-                        "text" : "pools"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get Ceph configuration.",
-                              "method" : "GET",
-                              "name" : "config",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/config",
-                        "text" : "config"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get Ceph configuration database.",
-                              "method" : "GET",
-                              "name" : "configdb",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "can_update_at_runtime" : {
-                                          "type" : "boolean"
-                                       },
-                                       "level" : {
-                                          "type" : "string"
-                                       },
-                                       "mask" : {
-                                          "type" : "string"
-                                       },
-                                       "name" : {
-                                          "type" : "string"
-                                       },
-                                       "section" : {
-                                          "type" : "string"
-                                       },
-                                       "value" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/configdb",
-                        "text" : "configdb"
+                        "path" : "/nodes/{node}/ceph/pool",
+                        "text" : "pool"
                      },
                      {
                         "info" : {
@@ -34543,7 +39568,7 @@ const apiSchema = [
                                     },
                                     "pg_bits" : {
                                        "default" : 6,
-                                       "description" : "Placement group bits, used to specify the default number of placement groups.\n\nNOTE: 'osd pool default pg num' does not work for default pools.",
+                                       "description" : "Placement group bits, used to specify the default number of placement groups.\n\nDepreacted. This setting was deprecated in recent Ceph versions.",
                                        "maximum" : 14,
                                        "minimum" : 6,
                                        "optional" : 1,
@@ -34895,7 +39920,12 @@ const apiSchema = [
                               "proxyto" : "node",
                               "returns" : {
                                  "items" : {
-                                    "properties" : {},
+                                    "properties" : {
+                                       "name" : {
+                                          "description" : "Name of the CRUSH rule.",
+                                          "type" : "string"
+                                       }
+                                    },
                                     "type" : "object"
                                  },
                                  "links" : [
@@ -34957,7 +39987,7 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.audit"
+                                       "Sys.Audit"
                                     ]
                                  ]
                               },
@@ -35053,9 +40083,10 @@ const apiSchema = [
                                     "storage" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     }
                                  }
                               },
@@ -35075,7 +40106,7 @@ const apiSchema = [
                                     },
                                     "bwlimit" : {
                                        "default" : 0,
-                                       "description" : "Limit I/O bandwidth (KBytes per second).",
+                                       "description" : "Limit I/O bandwidth (in KiB/s).",
                                        "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer"
@@ -35105,14 +40136,22 @@ const apiSchema = [
                                        "type" : "string"
                                     },
                                     "exclude-path" : {
-                                       "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root,  other paths match relative to each subdirectory.",
-                                       "format" : "string-alist",
+                                       "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
+                                       "items" : {
+                                          "type" : "string"
+                                       },
+                                       "optional" : 1,
+                                       "type" : "array"
+                                    },
+                                    "fleecing" : {
+                                       "description" : "Options for backup fleecing (VM only).",
+                                       "format" : "backup-fleecing",
                                        "optional" : 1,
                                        "type" : "string"
                                     },
                                     "ionice" : {
                                        "default" : 7,
-                                       "description" : "Set CFQ ionice priority.",
+                                       "description" : "Set IO priority when using the BFQ scheduler. For snapshot and suspend mode backups of VMs, this only affects the compressor. A value of 8 means the idle priority is used, otherwise the best-effort priority is used with the specified value.",
                                        "maximum" : 8,
                                        "minimum" : 0,
                                        "optional" : 1,
@@ -35127,7 +40166,7 @@ const apiSchema = [
                                     },
                                     "mailnotification" : {
                                        "default" : "always",
-                                       "description" : "Specify when to send an email",
+                                       "description" : "Deprecated: use notification targets/matchers instead. Specify when to send a notification mail",
                                        "enum" : [
                                           "always",
                                           "failure"
@@ -35136,7 +40175,7 @@ const apiSchema = [
                                        "type" : "string"
                                     },
                                     "mailto" : {
-                                       "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+                                       "description" : "Deprecated: Use notification targets/matchers instead. Comma-separated list of email addresses or users that should receive email notifications.",
                                        "format" : "email-or-username-list",
                                        "optional" : 1,
                                        "type" : "string"
@@ -35171,6 +40210,34 @@ const apiSchema = [
                                        "requires" : "storage",
                                        "type" : "string"
                                     },
+                                    "notification-mode" : {
+                                       "default" : "auto",
+                                       "description" : "Determine which notification system to use. If set to 'legacy-sendmail', vzdump will consider the mailto/mailnotification parameters and send emails to the specified address(es) via the 'sendmail' command. If set to 'notification-system', a notification will be sent via PVE's notification system, and the mailto and mailnotification will be ignored. If set to 'auto' (default setting), an email will be sent if mailto is set, and the notification system will be used if not.",
+                                       "enum" : [
+                                          "auto",
+                                          "legacy-sendmail",
+                                          "notification-system"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "notification-policy" : {
+                                       "default" : "always",
+                                       "description" : "Deprecated: Do not use",
+                                       "enum" : [
+                                          "always",
+                                          "failure",
+                                          "never"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "notification-target" : {
+                                       "description" : "Deprecated: Do not use",
+                                       "format" : "pve-configid",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "performance" : {
                                        "description" : "Other performance-related settings.",
                                        "format" : "backup-performance",
@@ -35240,6 +40307,7 @@ const apiSchema = [
                                     "storage" : {
                                        "description" : "Store resulting file to this storage.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "optional" : 1,
                                        "type" : "string"
                                     },
@@ -35256,7 +40324,7 @@ const apiSchema = [
                                     },
                                     "zstd" : {
                                        "default" : 1,
-                                       "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.",
+                                       "description" : "Zstd threads. N=0 uses half of the available cores, if N is set to a value bigger than 0, N is used as thread count.",
                                        "optional" : 1,
                                        "type" : "integer"
                                     }
@@ -35326,7 +40394,7 @@ const apiSchema = [
                               },
                               "bwlimit" : {
                                  "default" : 0,
-                                 "description" : "Limit I/O bandwidth (KBytes per second).",
+                                 "description" : "Limit I/O bandwidth (in KiB/s).",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -35359,15 +40427,24 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "exclude-path" : {
-                                 "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root,  other paths match relative to each subdirectory.",
-                                 "format" : "string-alist",
+                                 "description" : "Exclude certain files/directories (shell globs). Paths starting with '/' are anchored to the container's root, other paths match relative to each subdirectory.",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array",
+                                 "typetext" : "<array>"
+                              },
+                              "fleecing" : {
+                                 "description" : "Options for backup fleecing (VM only).",
+                                 "format" : "backup-fleecing",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "[[enabled=]<1|0>] [,storage=<storage ID>]"
                               },
                               "ionice" : {
                                  "default" : 7,
-                                 "description" : "Set CFQ ionice priority.",
+                                 "description" : "Set IO priority when using the BFQ scheduler. For snapshot and suspend mode backups of VMs, this only affects the compressor. A value of 8 means the idle priority is used, otherwise the best-effort priority is used with the specified value.",
                                  "maximum" : 8,
                                  "minimum" : 0,
                                  "optional" : 1,
@@ -35384,7 +40461,7 @@ const apiSchema = [
                               },
                               "mailnotification" : {
                                  "default" : "always",
-                                 "description" : "Specify when to send an email",
+                                 "description" : "Deprecated: use notification targets/matchers instead. Specify when to send a notification mail",
                                  "enum" : [
                                     "always",
                                     "failure"
@@ -35393,7 +40470,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "mailto" : {
-                                 "description" : "Comma-separated list of email addresses or users that should receive email notifications.",
+                                 "description" : "Deprecated: Use notification targets/matchers instead. Comma-separated list of email addresses or users that should receive email notifications.",
                                  "format" : "email-or-username-list",
                                  "optional" : 1,
                                  "type" : "string",
@@ -35432,12 +40509,41 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "notification-mode" : {
+                                 "default" : "auto",
+                                 "description" : "Determine which notification system to use. If set to 'legacy-sendmail', vzdump will consider the mailto/mailnotification parameters and send emails to the specified address(es) via the 'sendmail' command. If set to 'notification-system', a notification will be sent via PVE's notification system, and the mailto and mailnotification will be ignored. If set to 'auto' (default setting), an email will be sent if mailto is set, and the notification system will be used if not.",
+                                 "enum" : [
+                                    "auto",
+                                    "legacy-sendmail",
+                                    "notification-system"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "notification-policy" : {
+                                 "default" : "always",
+                                 "description" : "Deprecated: Do not use",
+                                 "enum" : [
+                                    "always",
+                                    "failure",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "notification-target" : {
+                                 "description" : "Deprecated: Do not use",
+                                 "format" : "pve-configid",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "performance" : {
                                  "description" : "Other performance-related settings.",
                                  "format" : "backup-performance",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[max-workers=<integer>]"
+                                 "typetext" : "[max-workers=<integer>] [,pbs-entries-max=<integer>]"
                               },
                               "pigz" : {
                                  "default" : 0,
@@ -35518,9 +40624,10 @@ const apiSchema = [
                               "storage" : {
                                  "description" : "Store resulting file to this storage.",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "tmpdir" : {
                                  "description" : "Store temporary files to specified directory.",
@@ -35537,7 +40644,7 @@ const apiSchema = [
                               },
                               "zstd" : {
                                  "default" : 1,
-                                 "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.",
+                                 "description" : "Zstd threads. N=0 uses half of the available cores, if N is set to a value bigger than 0, N is used as thread count.",
                                  "optional" : 1,
                                  "type" : "integer",
                                  "typetext" : "<integer>"
@@ -35545,7 +40652,7 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit', 'performance' and 'ionice' parameters are restricted to the 'root@pam' user.",
+                           "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage (and fleecing storage when fleecing is used). The 'tmpdir', 'dumpdir' and 'script' parameters are restricted to the 'root@pam' user. The 'maxfiles' and 'prune-backups' settings require 'Datastore.Allocate' on the backup storage. The 'bwlimit', 'performance' and 'ionice' parameters require 'Sys.Modify' on '/'.",
                            "user" : "all"
                         },
                         "protected" : 1,
@@ -36068,7 +41175,7 @@ const apiSchema = [
                            "properties" : {
                               "force" : {
                                  "default" : 0,
-                                 "description" : "Always connect to server, even if we have up to date info inside local cache.",
+                                 "description" : "Always connect to server, even if local cache is still valid.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -36107,7 +41214,7 @@ const apiSchema = [
                               "key" : {
                                  "description" : "Proxmox VE subscription key",
                                  "maxLength" : 32,
-                                 "pattern" : "pve([1248])([cbsp])-[0-9a-f]{10}",
+                                 "pattern" : "\\s*pve([1248])([cbsp])-[0-9a-f]{10}\\s*",
                                  "type" : "string"
                               },
                               "node" : {
@@ -36545,7 +41652,8 @@ const apiSchema = [
                                     "OVSBond",
                                     "OVSPort",
                                     "OVSIntPort",
-                                    "any_bridge"
+                                    "any_bridge",
+                                    "any_local_bridge"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -36867,9 +41975,15 @@ const apiSchema = [
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
+                                          "download" : {
+                                             "description" : "Whether the tasklog file should be downloaded. This parameter can't be used in conjunction with other parameters",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "limit" : {
                                              "default" : 50,
-                                             "description" : "The maximum amount of lines that should be printed.",
+                                             "description" : "The amount of lines to read from the tasklog.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -36883,7 +41997,7 @@ const apiSchema = [
                                           },
                                           "start" : {
                                              "default" : 0,
-                                             "description" : "The line number to start printing at.",
+                                             "description" : "Start at this line when reading the tasklog",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -37154,10 +42268,11 @@ const apiSchema = [
                               "vmid" : {
                                  "description" : "Only list tasks for this VM.",
                                  "format" : "pve-vmid",
-                                 "minimum" : 1,
+                                 "maximum" : 999999999,
+                                 "minimum" : 100,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
+                                 "typetext" : "<integer> (100 - 999999999)"
                               }
                            }
                         },
@@ -37778,8 +42893,11 @@ const apiSchema = [
                                                 "perm",
                                                 "/",
                                                 [
+                                                   "Sys.Audit",
                                                    "Sys.Modify"
-                                                ]
+                                                ],
+                                                "any",
+                                                1
                                              ]
                                           },
                                           "protected" : 1,
@@ -37895,8 +43013,11 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
+                                       "Sys.Audit",
                                        "Sys.Modify"
-                                    ]
+                                    ],
+                                    "any",
+                                    1
                                  ]
                               },
                               "protected" : 1,
@@ -38320,8 +43441,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "type" : {
                                              "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.",
@@ -38335,10 +43457,11 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "Only prune backups for this VM.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -38376,8 +43499,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "type" : {
                                              "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.",
@@ -38391,10 +43515,11 @@ const apiSchema = [
                                           "vmid" : {
                                              "description" : "Only consider backups for this guest.",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -38482,9 +43607,10 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "optional" : 1,
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "volume" : {
                                                    "description" : "Volume identifier",
@@ -38521,9 +43647,10 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "optional" : 1,
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "volume" : {
                                                    "description" : "Volume identifier",
@@ -38589,9 +43716,10 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "optional" : 1,
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "target" : {
                                                    "description" : "Target volume identifier",
@@ -38647,9 +43775,10 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "optional" : 1,
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "volume" : {
                                                    "description" : "Volume identifier",
@@ -38699,16 +43828,18 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "vmid" : {
                                              "description" : "Only list images for this VM",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -38843,15 +43974,17 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "vmid" : {
                                              "description" : "Specify owner VM",
                                              "format" : "pve-vmid",
-                                             "minimum" : 1,
+                                             "maximum" : 999999999,
+                                             "minimum" : 100,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (1 - N)"
+                                             "typetext" : "<integer> (100 - 999999999)"
                                           }
                                        }
                                     },
@@ -38902,8 +44035,9 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
                                                 },
                                                 "volume" : {
                                                    "description" : "Backup volume ID or name. Currently only PBS snapshots are supported.",
@@ -38982,8 +44116,16 @@ const apiSchema = [
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
+                                                   "format_description" : "storage ID",
                                                    "type" : "string",
-                                                   "typetext" : "<string>"
+                                                   "typetext" : "<storage ID>"
+                                                },
+                                                "tar" : {
+                                                   "default" : 0,
+                                                   "description" : "Download dirs as 'tar.zst' instead of 'zip'.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
                                                 },
                                                 "volume" : {
                                                    "description" : "Backup volume ID or name. Currently only PBS snapshots are supported.",
@@ -39031,8 +44173,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           }
                                        }
                                     },
@@ -39093,8 +44236,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "timeframe" : {
                                              "description" : "Specify the time frame you are interested in.",
@@ -39165,8 +44309,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "timeframe" : {
                                              "description" : "Specify the time frame you are interested in.",
@@ -39263,14 +44408,15 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "tmpfilename" : {
                                              "description" : "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trusted port on localhost.",
                                              "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                             "pattern" : "/var/tmp/pveupload-[0-9a-f]+",
+                                             "type" : "string"
                                           }
                                        }
                                     },
@@ -39324,6 +44470,13 @@ const apiSchema = [
                                              "requires" : "checksum",
                                              "type" : "string"
                                           },
+                                          "compression" : {
+                                             "description" : "Decompress the downloaded file using the specified compression algorithm.",
+                                             "enum" : null,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
                                           "content" : {
                                              "description" : "Content type.",
                                              "enum" : [
@@ -39348,8 +44501,9 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "url" : {
                                              "description" : "The URL to download the file from.",
@@ -39376,14 +44530,25 @@ const apiSchema = [
                                              ]
                                           ],
                                           [
-                                             "perm",
-                                             "/",
+                                             "or",
                                              [
-                                                "Sys.Audit",
-                                                "Sys.Modify"
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit",
+                                                   "Sys.Modify"
+                                                ]
+                                             ],
+                                             [
+                                                "perm",
+                                                "/nodes/{node}",
+                                                [
+                                                   "Sys.AccessNetwork"
+                                                ]
                                              ]
                                           ]
-                                       ]
+                                       ],
+                                       "description" : "Requires allocation access on the storage and as this allows one to probe the (local!) host network indirectly it also requires one of Sys.Modify on / (for backwards compatibility) or the newer Sys.AccessNetwork privilege on the node."
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -39395,6 +44560,119 @@ const apiSchema = [
                               "leaf" : 1,
                               "path" : "/nodes/{node}/storage/{storage}/download-url",
                               "text" : "download-url"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the base parameters for creating a guest which imports data from a foreign importable guest, like an ESXi VM",
+                                    "method" : "GET",
+                                    "name" : "get_import_metadata",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "storage" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
+                                             "type" : "string",
+                                             "typetext" : "<storage ID>"
+                                          },
+                                          "volume" : {
+                                             "description" : "Volume identifier for the guest archive/entry.",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "description" : "You need read access for the volume.",
+                                       "user" : "all"
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "additionalProperties" : 0,
+                                       "description" : "Information about how to import a guest.",
+                                       "properties" : {
+                                          "create-args" : {
+                                             "additionalProperties" : 1,
+                                             "description" : "Parameters which can be used in a call to create a VM or container.",
+                                             "type" : "object"
+                                          },
+                                          "disks" : {
+                                             "additionalProperties" : 1,
+                                             "description" : "Recognised disk volumes as `$bus$id` => `$storeid:$path` map.",
+                                             "optional" : 1,
+                                             "type" : "object"
+                                          },
+                                          "net" : {
+                                             "additionalProperties" : 1,
+                                             "description" : "Recognised network interfaces as `net$id` => { ...params } object.",
+                                             "optional" : 1,
+                                             "type" : "object"
+                                          },
+                                          "source" : {
+                                             "description" : "The type of the import-source of this guest volume.",
+                                             "enum" : [
+                                                "esxi"
+                                             ],
+                                             "type" : "string"
+                                          },
+                                          "type" : {
+                                             "description" : "The type of guest this is going to produce.",
+                                             "enum" : [
+                                                "vm"
+                                             ],
+                                             "type" : "string"
+                                          },
+                                          "warnings" : {
+                                             "description" : "List of known issues that can affect the import of a guest. Note that lack of warning does not imply that there cannot be any problems.",
+                                             "items" : {
+                                                "additionalProperties" : 1,
+                                                "properties" : {
+                                                   "key" : {
+                                                      "description" : "Related subject (config) key of warning.",
+                                                      "optional" : 1,
+                                                      "type" : "string"
+                                                   },
+                                                   "type" : {
+                                                      "description" : "What this warning is about.",
+                                                      "enum" : [
+                                                         "cdrom-image-ignored",
+                                                         "efi-state-lost",
+                                                         "guest-is-running",
+                                                         "nvme-unsupported",
+                                                         "ovmf-with-lsi-unsupported",
+                                                         "serial-port-socket-only"
+                                                      ],
+                                                      "type" : "string"
+                                                   },
+                                                   "value" : {
+                                                      "description" : "Related subject (config) value of warning.",
+                                                      "optional" : 1,
+                                                      "type" : "string"
+                                                   }
+                                                },
+                                                "type" : "object"
+                                             },
+                                             "optional" : 1,
+                                             "type" : "array"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/storage/{storage}/import-metadata",
+                              "text" : "import-metadata"
                            }
                         ],
                         "info" : {
@@ -39415,8 +44693,9 @@ const apiSchema = [
                                     "storage" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     }
                                  }
                               },
@@ -39495,9 +44774,10 @@ const apiSchema = [
                               "storage" : {
                                  "description" : "Only list status for  specified storage",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "target" : {
                                  "description" : "If target is different to 'node', we only lists shared storages which content is accessible on this 'node' and the specified 'target' node.",
@@ -39546,6 +44826,7 @@ const apiSchema = [
                                  "storage" : {
                                     "description" : "The storage identifier.",
                                     "format" : "pve-storage-id",
+                                    "format_description" : "storage ID",
                                     "type" : "string"
                                  },
                                  "total" : {
@@ -39618,8 +44899,9 @@ const apiSchema = [
                                           "name" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -39634,10 +44916,10 @@ const apiSchema = [
                                           "perm",
                                           "/",
                                           [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
+                                             "Sys.Modify"
                                           ]
-                                       ]
+                                       ],
+                                       "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'cleanup-config'"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -39673,11 +44955,8 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Audit"
+                                    ]
                                  ]
                               },
                               "protected" : 1,
@@ -39762,8 +45041,9 @@ const apiSchema = [
                                     "name" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     },
                                     "node" : {
                                        "description" : "The cluster node name.",
@@ -39778,10 +45058,10 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
+                                       "Sys.Modify"
                                     ]
-                                 ]
+                                 ],
+                                 "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'add_storage'"
                               },
                               "protected" : 1,
                               "proxyto" : "node",
@@ -39823,8 +45103,9 @@ const apiSchema = [
                                           "name" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -39835,8 +45116,9 @@ const apiSchema = [
                                           "volume-group" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           }
                                        }
                                     },
@@ -39845,10 +45127,10 @@ const apiSchema = [
                                           "perm",
                                           "/",
                                           [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
+                                             "Sys.Modify"
                                           ]
-                                       ]
+                                       ],
+                                       "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'cleanup-config'"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -39884,11 +45166,8 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Audit"
+                                    ]
                                  ]
                               },
                               "protected" : 1,
@@ -39949,8 +45228,9 @@ const apiSchema = [
                                     "name" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     },
                                     "node" : {
                                        "description" : "The cluster node name.",
@@ -39965,10 +45245,10 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
+                                       "Sys.Modify"
                                     ]
-                                 ]
+                                 ],
+                                 "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'add_storage'"
                               },
                               "protected" : 1,
                               "proxyto" : "node",
@@ -40010,8 +45290,9 @@ const apiSchema = [
                                           "name" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -40026,10 +45307,10 @@ const apiSchema = [
                                           "perm",
                                           "/",
                                           [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
+                                             "Sys.Modify"
                                           ]
-                                       ]
+                                       ],
+                                       "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'cleanup-config'"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -40065,11 +45346,8 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Audit"
+                                    ]
                                  ]
                               },
                               "protected" : 1,
@@ -40136,8 +45414,9 @@ const apiSchema = [
                                     "name" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     },
                                     "node" : {
                                        "description" : "The cluster node name.",
@@ -40152,10 +45431,10 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
+                                       "Sys.Modify"
                                     ]
-                                 ]
+                                 ],
+                                 "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'add_storage'"
                               },
                               "protected" : 1,
                               "proxyto" : "node",
@@ -40197,8 +45476,9 @@ const apiSchema = [
                                           "name" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -40213,10 +45493,10 @@ const apiSchema = [
                                           "perm",
                                           "/",
                                           [
-                                             "Sys.Modify",
-                                             "Datastore.Allocate"
+                                             "Sys.Modify"
                                           ]
-                                       ]
+                                       ],
+                                       "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'cleanup-config'"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -40235,8 +45515,9 @@ const apiSchema = [
                                           "name" : {
                                              "description" : "The storage identifier.",
                                              "format" : "pve-storage-id",
+                                             "format_description" : "storage ID",
                                              "type" : "string",
-                                             "typetext" : "<string>"
+                                             "typetext" : "<storage ID>"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -40251,11 +45532,8 @@ const apiSchema = [
                                           "perm",
                                           "/",
                                           [
-                                             "Sys.Audit",
-                                             "Datastore.Audit"
-                                          ],
-                                          "any",
-                                          1
+                                             "Sys.Audit"
+                                          ]
                                        ]
                                     },
                                     "protected" : 1,
@@ -40355,11 +45633,8 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Audit"
+                                    ]
                                  ]
                               },
                               "protected" : 1,
@@ -40472,8 +45747,9 @@ const apiSchema = [
                                     "name" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
+                                       "format_description" : "storage ID",
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<storage ID>"
                                     },
                                     "node" : {
                                        "description" : "The cluster node name.",
@@ -40503,10 +45779,10 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Modify",
-                                       "Datastore.Allocate"
+                                       "Sys.Modify"
                                     ]
-                                 ]
+                                 ],
+                                 "description" : "Requires additionally 'Datastore.Allocate' on /storage when setting 'add_storage'"
                               },
                               "protected" : 1,
                               "proxyto" : "node",
@@ -40567,21 +45843,15 @@ const apiSchema = [
                                        "perm",
                                        "/",
                                        [
-                                          "Sys.Audit",
-                                          "Datastore.Audit"
-                                       ],
-                                       "any",
-                                       1
+                                          "Sys.Audit"
+                                       ]
                                     ],
                                     [
                                        "perm",
                                        "/nodes/{node}",
                                        [
-                                          "Sys.Audit",
-                                          "Datastore.Audit"
-                                       ],
-                                       "any",
-                                       1
+                                          "Sys.Audit"
+                                       ]
                                     ]
                                  ]
                               },
@@ -40611,6 +45881,12 @@ const apiSchema = [
                                        "osdid" : {
                                           "type" : "integer"
                                        },
+                                       "osdid-list" : {
+                                          "items" : {
+                                             "type" : "integer"
+                                          },
+                                          "type" : "array"
+                                       },
                                        "parent" : {
                                           "description" : "For partitions only. The device path of the disk the partition resides on.",
                                           "optional" : 1,
@@ -40680,11 +45956,8 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Audit"
+                                    ]
                                  ]
                               },
                               "protected" : 1,
@@ -40895,7 +46168,7 @@ const apiSchema = [
                                     },
                                     "notify" : {
                                        "default" : 0,
-                                       "description" : "Send notification mail about new packages (to email address specified for user 'root@pam').",
+                                       "description" : "Send notification about new packages.",
                                        "optional" : 1,
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
@@ -41393,8 +46666,8 @@ const apiSchema = [
                                        "additionalProperties" : 0,
                                        "properties" : {
                                           "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
@@ -41575,8 +46848,8 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                             "maxLength" : 40,
+                                             "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                             "maxLength" : 64,
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
@@ -41596,7 +46869,7 @@ const apiSchema = [
                                              "typetext" : "<integer> (0 - N)"
                                           },
                                           "icmp-type" : {
-                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                              "format" : "pve-fw-icmp-type-spec",
                                              "optional" : 1,
                                              "type" : "string",
@@ -41785,8 +47058,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -41806,7 +47079,7 @@ const apiSchema = [
                                        "typetext" : "<integer> (0 - N)"
                                     },
                                     "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                        "format" : "pve-fw-icmp-type-spec",
                                        "optional" : 1,
                                        "type" : "string",
@@ -41996,6 +47269,13 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "boolean"
                                     },
+                                    "nf_conntrack_helpers" : {
+                                       "default" : "",
+                                       "description" : "Enable conntrack helpers for specific protocols. Supported protocols: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp",
+                                       "format" : "pve-fw-conntrack-helper",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "nf_conntrack_max" : {
                                        "default" : 262144,
                                        "description" : "Maximum number of tracked connections.",
@@ -42018,6 +47298,12 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "integer"
                                     },
+                                    "nftables" : {
+                                       "default" : 0,
+                                       "description" : "Enable nftables based firewall (tech preview)",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "nosmurfs" : {
                                        "description" : "Enable SMURFS filter.",
                                        "optional" : 1,
@@ -42099,8 +47385,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
+                                       "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 64,
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -42164,6 +47450,14 @@ const apiSchema = [
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
                                     },
+                                    "nf_conntrack_helpers" : {
+                                       "default" : "",
+                                       "description" : "Enable conntrack helpers for specific protocols. Supported protocols: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp",
+                                       "format" : "pve-fw-conntrack-helper",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "nf_conntrack_max" : {
                                        "default" : 262144,
                                        "description" : "Maximum number of tracked connections.",
@@ -42189,6 +47483,13 @@ const apiSchema = [
                                        "type" : "integer",
                                        "typetext" : "<integer> (30 - 60)"
                                     },
+                                    "nftables" : {
+                                       "default" : 0,
+                                       "description" : "Enable nftables based firewall (tech preview)",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
@@ -42305,11 +47606,25 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "since" : {
+                                       "description" : "Display log since this UNIX epoch.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
                                     "start" : {
                                        "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer",
                                        "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "until" : {
+                                       "description" : "Display log until this UNIX epoch.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
                                     }
                                  }
                               },
@@ -42596,10 +47911,11 @@ const apiSchema = [
                               "guest" : {
                                  "description" : "Only list replication jobs for this guest.",
                                  "format" : "pve-vmid",
-                                 "minimum" : 1,
+                                 "maximum" : 999999999,
+                                 "minimum" : 100,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (1 - N)"
+                                 "typetext" : "<integer> (100 - 999999999)"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -43211,8 +48527,32 @@ const apiSchema = [
                                  "type" : "integer"
                               },
                               "wakeonlan" : {
-                                 "description" : "MAC address for wake on LAN",
-                                 "format" : "mac-addr",
+                                 "description" : "Node specific wake on LAN settings.",
+                                 "format" : {
+                                    "bind-interface" : {
+                                       "default" : "The interface carrying the default route",
+                                       "description" : "Bind to this interface when sending wake on LAN packet",
+                                       "format" : "pve-iface",
+                                       "format_description" : "bind interface",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "broadcast-address" : {
+                                       "default" : "255.255.255.255",
+                                       "description" : "IPv4 broadcast address to use when sending wake on LAN packet",
+                                       "format" : "ipv4",
+                                       "format_description" : "IPv4 broadcast address",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "mac" : {
+                                       "default_key" : 1,
+                                       "description" : "MAC address for wake on LAN",
+                                       "format" : "mac-addr",
+                                       "format_description" : "MAC address",
+                                       "type" : "string"
+                                    }
+                                 },
                                  "optional" : 1,
                                  "type" : "string"
                               }
@@ -43318,11 +48658,35 @@ const apiSchema = [
                                  "typetext" : "<integer> (0 - 300)"
                               },
                               "wakeonlan" : {
-                                 "description" : "MAC address for wake on LAN",
-                                 "format" : "mac-addr",
+                                 "description" : "Node specific wake on LAN settings.",
+                                 "format" : {
+                                    "bind-interface" : {
+                                       "default" : "The interface carrying the default route",
+                                       "description" : "Bind to this interface when sending wake on LAN packet",
+                                       "format" : "pve-iface",
+                                       "format_description" : "bind interface",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "broadcast-address" : {
+                                       "default" : "255.255.255.255",
+                                       "description" : "IPv4 broadcast address to use when sending wake on LAN packet",
+                                       "format" : "ipv4",
+                                       "format_description" : "IPv4 broadcast address",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "mac" : {
+                                       "default_key" : 1,
+                                       "description" : "MAC address for wake on LAN",
+                                       "format" : "mac-addr",
+                                       "format_description" : "MAC address",
+                                       "type" : "string"
+                                    }
+                                 },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "[mac=]<MAC address> [,bind-interface=<bind interface>] [,broadcast-address=<IPv4 broadcast address>]"
                               }
                            }
                         },
@@ -43653,6 +49017,50 @@ const apiSchema = [
                         },
                         "proxyto" : "node",
                         "returns" : {
+                           "additionalProperties" : 1,
+                           "properties" : {
+                              "boot-info" : {
+                                 "description" : "Meta-information about the boot mode.",
+                                 "properties" : {
+                                    "mode" : {
+                                       "description" : "Through which firmware the system got booted.",
+                                       "enum" : [
+                                          "efi",
+                                          "legacy-bios"
+                                       ],
+                                       "type" : "string"
+                                    },
+                                    "secureboot" : {
+                                       "description" : "System is booted in secure mode, only applicable for the \"efi\" mode.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "current-kernel" : {
+                                 "description" : "The uptime of the system in seconds.",
+                                 "properties" : {
+                                    "machine" : {
+                                       "description" : "Hardware (architecture) type",
+                                       "type" : "string"
+                                    },
+                                    "release" : {
+                                       "description" : "OS kernel release (e.g., \"6.8.0\")",
+                                       "type" : "string"
+                                    },
+                                    "sysname" : {
+                                       "description" : "OS kernel name (e.g., \"Linux\")",
+                                       "type" : "string"
+                                    },
+                                    "version" : {
+                                       "description" : "OS kernel version with build info",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
                            "type" : "object"
                         }
                      },
@@ -43745,7 +49153,7 @@ const apiSchema = [
                   "info" : {
                      "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Execute multiple commands in order.",
+                        "description" : "Execute multiple commands in order, root only.",
                         "method" : "POST",
                         "name" : "execute",
                         "parameters" : {
@@ -43756,7 +49164,7 @@ const apiSchema = [
                                  "format" : "pve-command-batch",
                                  "type" : "string",
                                  "typetext" : "<string>",
-                                 "verbose_description" : "JSON encoded array of commands, where each command is an object with the following properties:\n  args:      <object>\n\n\t     A set of parameter names and their values.\n\n  method:    (GET|POST|PUT|DELETE)\n\n\t     A method related to the API endpoint (GET, POST etc.).\n\n  path:      <string>\n\n\t     A relative path to an API endpoint on this node.\n\n"
+                                 "verbose_description" : "JSON encoded array of commands, where each command is an object with the following properties:\n  args:      <object>\n\t     A set of parameter names and their values.\n\n  method:    (GET|POST|PUT|DELETE)\n\t     A method related to the API endpoint (GET, POST etc.).\n\n  path:      <string>\n\t     A relative path to an API endpoint on this node.\n\n"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -43766,15 +49174,6 @@ const apiSchema = [
                               }
                            }
                         },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
@@ -44126,11 +49525,11 @@ const apiSchema = [
                            "properties" : {
                               "cmd" : {
                                  "default" : "login",
-                                 "description" : "Run specific command or default to login.",
+                                 "description" : "Run specific command or default to login (requires 'root@pam')",
                                  "enum" : [
+                                    "upgrade",
                                     "ceph_install",
-                                    "login",
-                                    "upgrade"
+                                    "login"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -44180,8 +49579,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "returns" : {
@@ -44222,11 +49620,11 @@ const apiSchema = [
                            "properties" : {
                               "cmd" : {
                                  "default" : "login",
-                                 "description" : "Run specific command or default to login.",
+                                 "description" : "Run specific command or default to login (requires 'root@pam')",
                                  "enum" : [
+                                    "upgrade",
                                     "ceph_install",
-                                    "login",
-                                    "upgrade"
+                                    "login"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -44254,8 +49652,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "returns" : {
@@ -44320,7 +49717,7 @@ const apiSchema = [
                                  "Sys.Console"
                               ]
                            ],
-                           "description" : "Restricted to users on realm 'pam'. You also need to pass a valid ticket (vncticket)."
+                           "description" : "You also need to pass a valid ticket (vncticket)."
                         },
                         "returns" : {
                            "properties" : {
@@ -44348,11 +49745,11 @@ const apiSchema = [
                            "properties" : {
                               "cmd" : {
                                  "default" : "login",
-                                 "description" : "Run specific command or default to login.",
+                                 "description" : "Run specific command or default to login (requires 'root@pam')",
                                  "enum" : [
+                                    "upgrade",
                                     "ceph_install",
-                                    "login",
-                                    "upgrade"
+                                    "login"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -44387,8 +49784,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -44675,8 +50071,9 @@ const apiSchema = [
                               "storage" : {
                                  "description" : "The storage where the template will be stored",
                                  "format" : "pve-storage-id",
+                                 "format_description" : "storage ID",
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<storage ID>"
                               },
                               "template" : {
                                  "description" : "The template which will downloaded",
@@ -44738,11 +50135,21 @@ const apiSchema = [
                         },
                         "permissions" : {
                            "check" : [
-                              "perm",
-                              "/",
+                              "or",
                               [
-                                 "Sys.Audit",
-                                 "Sys.Modify"
+                                 "perm",
+                                 "/",
+                                 [
+                                    "Sys.Audit",
+                                    "Sys.Modify"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/nodes/{node}",
+                                 [
+                                    "Sys.AccessNetwork"
+                                 ]
                               ]
                            ]
                         },
@@ -44842,13 +50249,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
+                           "description" : "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -44871,12 +50273,28 @@ const apiSchema = [
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
+                              "force-stop" : {
+                                 "default" : 1,
+                                 "description" : "Force a hard-stop after the timeout.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "timeout" : {
+                                 "default" : 180,
+                                 "description" : "Timeout for each guest shutdown task. Depending on `force-stop`, the shutdown gets then simply aborted or a hard-stop is forced.",
+                                 "maximum" : 7200,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 7200)"
+                              },
                               "vms" : {
                                  "description" : "Only consider Guests with these IDs.",
                                  "format" : "pve-vmid-list",
@@ -44887,13 +50305,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
+                           "description" : "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -44906,6 +50319,46 @@ const apiSchema = [
                   "path" : "/nodes/{node}/stopall",
                   "text" : "stopall"
                },
+               {
+                  "info" : {
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Suspend all VMs.",
+                        "method" : "POST",
+                        "name" : "suspendall",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "vms" : {
+                                 "description" : "Only consider Guests with these IDs.",
+                                 "format" : "pve-vmid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "description" : "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter. Additionally, you need 'VM.Config.Disk' on the '/vms/{vmid}' path and 'Datastore.AllocateSpace' for the configured state-storage(s)",
+                           "user" : "all"
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/suspendall",
+                  "text" : "suspendall"
+               },
                {
                   "info" : {
                      "POST" : {
@@ -44917,7 +50370,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "maxworkers" : {
-                                 "description" : "Maximal number of parallel migration job. If not set use 'max_workers' from datacenter.cfg, one of both must be set!",
+                                 "description" : "Maximal number of parallel migration job. If not set, uses'max_workers' from datacenter.cfg. One of both must be set!",
                                  "minimum" : 1,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -44951,13 +50404,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.Migrate"
-                              ]
-                           ]
+                           "description" : "The 'VM.Migrate' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -45006,8 +50454,8 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
                                  "optional" : 1,
                                  "type" : "string"
                               }
@@ -45029,8 +50477,8 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -45204,8 +50652,9 @@ const apiSchema = [
                         "storage" : {
                            "description" : "The storage identifier.",
                            "format" : "pve-storage-id",
+                           "format_description" : "storage ID",
                            "type" : "string",
-                           "typetext" : "<string>"
+                           "typetext" : "<storage ID>"
                         }
                      }
                   },
@@ -45234,8 +50683,9 @@ const apiSchema = [
                         "storage" : {
                            "description" : "The storage identifier.",
                            "format" : "pve-storage-id",
+                           "format_description" : "storage ID",
                            "type" : "string",
-                           "typetext" : "<string>"
+                           "typetext" : "<storage ID>"
                         }
                      }
                   },
@@ -45267,7 +50717,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "bwlimit" : {
-                           "description" : "Set bandwidth/io limits various operations.",
+                           "description" : "Set I/O bandwidth limit for various operations (in KiB/s).",
                            "format" : {
                               "clone" : {
                                  "description" : "bandwidth limit in KiB/s for cloning disks",
@@ -45328,6 +50778,27 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "content-dirs" : {
+                           "description" : "Overrides for default content type directories.",
+                           "format" : "pve-dir-override-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "create-base-path" : {
+                           "default" : "yes",
+                           "description" : "Create the base directory if it doesn't exist.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "create-subdirs" : {
+                           "default" : "yes",
+                           "description" : "Populate the directory with the default structure.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
                         "data-pool" : {
                            "description" : "Data Pool (for erasure coding only)",
                            "optional" : 1,
@@ -45343,8 +50814,8 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "digest" : {
-                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                           "maxLength" : 40,
+                           "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 64,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -45442,7 +50913,7 @@ const apiSchema = [
                         },
                         "mkdir" : {
                            "default" : "yes",
-                           "description" : "Create the directory if it doesn't exist.",
+                           "description" : "Create the directory if it doesn't exist and populate it with default sub-dirs. NOTE: Deprecated, use the 'create-base-path' and 'create-subdirs' options instead.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -45475,7 +50946,7 @@ const apiSchema = [
                            "typetext" : "<boolean>"
                         },
                         "nodes" : {
-                           "description" : "List of cluster node names.",
+                           "description" : "List of nodes for which the storage configuration applies.",
                            "format" : "pve-node-list",
                            "optional" : 1,
                            "type" : "string",
@@ -45488,7 +50959,7 @@ const apiSchema = [
                            "typetext" : "<boolean>"
                         },
                         "options" : {
-                           "description" : "NFS mount options (see 'man nfs')",
+                           "description" : "NFS/CIFS mount options (see 'man nfs' or 'man mount.cifs')",
                            "format" : "pve-storage-options",
                            "optional" : 1,
                            "type" : "string",
@@ -45508,7 +50979,6 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "port" : {
-                           "default" : 8007,
                            "description" : "For non default port.",
                            "maximum" : 65535,
                            "minimum" : 1,
@@ -45563,7 +51033,14 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "shared" : {
-                           "description" : "Mark storage as shared.",
+                           "description" : "Indicate that this is a single storage with the same contents on all nodes (or all listed in the 'nodes' option). It will not make the contents of a local storage automatically accessible to other nodes, it just marks an already shared storage as such!",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "skip-cert-verification" : {
+                           "default" : "false",
+                           "description" : "Disable TLS certificate verification, only enable on fully trusted networks!",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -45591,8 +51068,9 @@ const apiSchema = [
                         "storage" : {
                            "description" : "The storage identifier.",
                            "format" : "pve-storage-id",
+                           "format_description" : "storage ID",
                            "type" : "string",
-                           "typetext" : "<string>"
+                           "typetext" : "<storage ID>"
                         },
                         "subdir" : {
                            "description" : "Subdir to mount.",
@@ -45662,6 +51140,7 @@ const apiSchema = [
                               "cephfs",
                               "cifs",
                               "dir",
+                              "esxi",
                               "glusterfs",
                               "iscsi",
                               "iscsidirect",
@@ -45701,6 +51180,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -45767,7 +51247,7 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "bwlimit" : {
-                     "description" : "Set bandwidth/io limits various operations.",
+                     "description" : "Set I/O bandwidth limit for various operations (in KiB/s).",
                      "format" : {
                         "clone" : {
                            "description" : "bandwidth limit in KiB/s for cloning disks",
@@ -45828,6 +51308,27 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "content-dirs" : {
+                     "description" : "Overrides for default content type directories.",
+                     "format" : "pve-dir-override-list",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "create-base-path" : {
+                     "default" : "yes",
+                     "description" : "Create the base directory if it doesn't exist.",
+                     "optional" : 1,
+                     "type" : "boolean",
+                     "typetext" : "<boolean>"
+                  },
+                  "create-subdirs" : {
+                     "default" : "yes",
+                     "description" : "Populate the directory with the default structure.",
+                     "optional" : 1,
+                     "type" : "boolean",
+                     "typetext" : "<boolean>"
+                  },
                   "data-pool" : {
                      "description" : "Data Pool (for erasure coding only)",
                      "optional" : 1,
@@ -45946,7 +51447,7 @@ const apiSchema = [
                   },
                   "mkdir" : {
                      "default" : "yes",
-                     "description" : "Create the directory if it doesn't exist.",
+                     "description" : "Create the directory if it doesn't exist and populate it with default sub-dirs. NOTE: Deprecated, use the 'create-base-path' and 'create-subdirs' options instead.",
                      "optional" : 1,
                      "type" : "boolean",
                      "typetext" : "<boolean>"
@@ -45979,7 +51480,7 @@ const apiSchema = [
                      "typetext" : "<boolean>"
                   },
                   "nodes" : {
-                     "description" : "List of cluster node names.",
+                     "description" : "List of nodes for which the storage configuration applies.",
                      "format" : "pve-node-list",
                      "optional" : 1,
                      "type" : "string",
@@ -45992,7 +51493,7 @@ const apiSchema = [
                      "typetext" : "<boolean>"
                   },
                   "options" : {
-                     "description" : "NFS mount options (see 'man nfs')",
+                     "description" : "NFS/CIFS mount options (see 'man nfs' or 'man mount.cifs')",
                      "format" : "pve-storage-options",
                      "optional" : 1,
                      "type" : "string",
@@ -46019,7 +51520,6 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "port" : {
-                     "default" : 8007,
                      "description" : "For non default port.",
                      "maximum" : 65535,
                      "minimum" : 1,
@@ -46087,7 +51587,14 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "shared" : {
-                     "description" : "Mark storage as shared.",
+                     "description" : "Indicate that this is a single storage with the same contents on all nodes (or all listed in the 'nodes' option). It will not make the contents of a local storage automatically accessible to other nodes, it just marks an already shared storage as such!",
+                     "optional" : 1,
+                     "type" : "boolean",
+                     "typetext" : "<boolean>"
+                  },
+                  "skip-cert-verification" : {
+                     "default" : "false",
+                     "description" : "Disable TLS certificate verification, only enable on fully trusted networks!",
                      "optional" : 1,
                      "type" : "boolean",
                      "typetext" : "<boolean>"
@@ -46115,8 +51622,9 @@ const apiSchema = [
                   "storage" : {
                      "description" : "The storage identifier.",
                      "format" : "pve-storage-id",
+                     "format_description" : "storage ID",
                      "type" : "string",
-                     "typetext" : "<string>"
+                     "typetext" : "<storage ID>"
                   },
                   "subdir" : {
                      "description" : "Subdir to mount.",
@@ -46161,6 +51669,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -46232,6 +51741,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -46278,7 +51788,7 @@ const apiSchema = [
                                        "typetext" : "<boolean>"
                                     },
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -46349,6 +51859,43 @@ const apiSchema = [
                         "path" : "/access/users/{userid}/tfa",
                         "text" : "tfa"
                      },
+                     {
+                        "info" : {
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Unlock a user's TFA authentication.",
+                              "method" : "PUT",
+                              "name" : "unlock_tfa",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "userid" : {
+                                       "description" : "Full User ID, in the `name@realm` format.",
+                                       "format" : "pve-userid",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "userid-group",
+                                    [
+                                       "User.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "boolean"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/access/users/{userid}/unlock-tfa",
+                        "text" : "unlock-tfa"
+                     },
                      {
                         "children" : [
                            {
@@ -46367,7 +51914,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -46409,7 +51956,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -46489,7 +52036,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -46585,7 +52132,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -46649,7 +52196,7 @@ const apiSchema = [
                                  "additionalProperties" : 0,
                                  "properties" : {
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -46725,7 +52272,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -46762,7 +52309,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -46783,11 +52330,13 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "comment" : {
+                                 "maxLength" : 2048,
                                  "optional" : 1,
                                  "type" : "string"
                               },
                               "email" : {
                                  "format" : "email-opt",
+                                 "maxLength" : 254,
                                  "optional" : 1,
                                  "type" : "string"
                               },
@@ -46804,6 +52353,7 @@ const apiSchema = [
                                  "type" : "integer"
                               },
                               "firstname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string"
                               },
@@ -46818,9 +52368,11 @@ const apiSchema = [
                               "keys" : {
                                  "description" : "Keys for two factor auth (yubico).",
                                  "optional" : 1,
+                                 "pattern" : "[0-9a-zA-Z!=]{0,4096}",
                                  "type" : "string"
                               },
                               "lastname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string"
                               },
@@ -46869,12 +52421,14 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "comment" : {
+                                 "maxLength" : 2048,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
                               "email" : {
                                  "format" : "email-opt",
+                                 "maxLength" : 254,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -46894,6 +52448,7 @@ const apiSchema = [
                                  "typetext" : "<integer> (0 - N)"
                               },
                               "firstname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -46907,16 +52462,17 @@ const apiSchema = [
                               "keys" : {
                                  "description" : "Keys for two factor auth (yubico).",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "pattern" : "[0-9a-zA-Z!=]{0,4096}",
+                                 "type" : "string"
                               },
                               "lastname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -46973,15 +52529,18 @@ const apiSchema = [
                      "description" : "The returned list is restricted to users where you have 'User.Modify' or 'Sys.Audit' permissions on '/access/groups' or on a group the user belongs too. But it always includes the current (authenticated) user.",
                      "user" : "all"
                   },
+                  "protected" : 1,
                   "returns" : {
                      "items" : {
                         "properties" : {
                            "comment" : {
+                              "maxLength" : 2048,
                               "optional" : 1,
                               "type" : "string"
                            },
                            "email" : {
                               "format" : "email-opt",
+                              "maxLength" : 254,
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -46998,6 +52557,7 @@ const apiSchema = [
                               "type" : "integer"
                            },
                            "firstname" : {
+                              "maxLength" : 1024,
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -47009,9 +52569,11 @@ const apiSchema = [
                            "keys" : {
                               "description" : "Keys for two factor auth (yubico).",
                               "optional" : 1,
+                              "pattern" : "[0-9a-zA-Z!=]{0,4096}",
                               "type" : "string"
                            },
                            "lastname" : {
+                              "maxLength" : 1024,
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -47021,6 +52583,11 @@ const apiSchema = [
                               "optional" : 1,
                               "type" : "string"
                            },
+                           "tfa-locked-until" : {
+                              "description" : "Contains a timestamp until when a user is locked out of 2nd factors.",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
                            "tokens" : {
                               "items" : {
                                  "properties" : {
@@ -47052,8 +52619,13 @@ const apiSchema = [
                               "optional" : 1,
                               "type" : "array"
                            },
+                           "totp-locked" : {
+                              "description" : "True if the user is currently locked out of TOTP factors.",
+                              "optional" : 1,
+                              "type" : "boolean"
+                           },
                            "userid" : {
-                              "description" : "User ID",
+                              "description" : "Full User ID, in the `name@realm` format.",
                               "format" : "pve-userid",
                               "maxLength" : 64,
                               "type" : "string"
@@ -47079,12 +52651,14 @@ const apiSchema = [
                      "additionalProperties" : 0,
                      "properties" : {
                         "comment" : {
+                           "maxLength" : 2048,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
                         },
                         "email" : {
                            "format" : "email-opt",
+                           "maxLength" : 254,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -47104,6 +52678,7 @@ const apiSchema = [
                            "typetext" : "<integer> (0 - N)"
                         },
                         "firstname" : {
+                           "maxLength" : 1024,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -47117,10 +52692,11 @@ const apiSchema = [
                         "keys" : {
                            "description" : "Keys for two factor auth (yubico).",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "[0-9a-zA-Z!=]{0,4096}",
+                           "type" : "string"
                         },
                         "lastname" : {
+                           "maxLength" : 1024,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -47134,7 +52710,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "userid" : {
-                           "description" : "User ID",
+                           "description" : "Full User ID, in the `name@realm` format.",
                            "format" : "pve-userid",
                            "maxLength" : 64,
                            "type" : "string",
@@ -47239,7 +52815,7 @@ const apiSchema = [
                               },
                               "members" : {
                                  "items" : {
-                                    "description" : "User ID",
+                                    "description" : "Full User ID, in the `name@realm` format.",
                                     "format" : "pve-userid",
                                     "maxLength" : 64,
                                     "type" : "string"
@@ -47445,6 +53021,18 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "boolean"
                               },
+                              "Mapping.Audit" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "Mapping.Modify" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "Mapping.Use" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
                               "Permissions.Modify" : {
                                  "optional" : 1,
                                  "type" : "boolean"
@@ -47473,6 +53061,14 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "boolean"
                               },
+                              "SDN.Use" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "Sys.AccessNetwork" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
                               "Sys.Audit" : {
                                  "optional" : 1,
                                  "type" : "boolean"
@@ -47872,11 +53468,12 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "remove-vanished" : {
-                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync.",
+                                       "default" : "none",
+                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync. Instead of a list it also can be 'none' (the default).",
                                        "optional" : "1",
-                                       "pattern" : "(?:(?:acl|properties|entry);)*(?:acl|properties|entry)",
+                                       "pattern" : "(?:(?:(?:acl|properties|entry);)*(?:acl|properties|entry))|none",
                                        "type" : "string",
-                                       "typetext" : "[acl];[properties];[entry]"
+                                       "typetext" : "([acl];[properties];[entry])|none"
                                     },
                                     "scope" : {
                                        "description" : "Select what to sync.",
@@ -47996,8 +53593,8 @@ const apiSchema = [
                               "acr-values" : {
                                  "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "pattern" : "^[^\\x00-\\x1F\\x7F <>#\"]*$",
+                                 "type" : "string"
                               },
                               "autocreate" : {
                                  "default" : 0,
@@ -48010,15 +53607,15 @@ const apiSchema = [
                                  "description" : "LDAP base domain name",
                                  "maxLength" : 256,
                                  "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
                               "bind_dn" : {
                                  "description" : "LDAP bind domain name",
                                  "maxLength" : 256,
                                  "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
                               "capath" : {
                                  "default" : "/etc/ssl/certs",
@@ -48046,6 +53643,13 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "check-connection" : {
+                                 "default" : 0,
+                                 "description" : "Check bind connection to the server.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "client-id" : {
                                  "description" : "OpenID Client ID",
                                  "maxLength" : 256,
@@ -48082,8 +53686,8 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
+                                 "description" : "Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 64,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -48114,8 +53718,8 @@ const apiSchema = [
                                  "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.",
                                  "maxLength" : 256,
                                  "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                                 "type" : "string"
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
                               "group_filter" : {
                                  "description" : "LDAP filter for group sync.",
@@ -48222,7 +53826,7 @@ const apiSchema = [
                                  "format" : "realm-sync-options",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=[acl];[properties];[entry]] [,scope=<users|groups|both>]"
+                                 "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=([acl];[properties];[entry])|none] [,scope=<users|groups|both>]"
                               },
                               "sync_attributes" : {
                                  "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write  'email=mail'. By default, each PVE user field is represented  by an LDAP attribute of the same name.",
@@ -48342,8 +53946,8 @@ const apiSchema = [
                         "acr-values" : {
                            "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "^[^\\x00-\\x1F\\x7F <>#\"]*$",
+                           "type" : "string"
                         },
                         "autocreate" : {
                            "default" : 0,
@@ -48356,15 +53960,15 @@ const apiSchema = [
                            "description" : "LDAP base domain name",
                            "maxLength" : 256,
                            "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                           "type" : "string"
+                           "type" : "string",
+                           "typetext" : "<string>"
                         },
                         "bind_dn" : {
                            "description" : "LDAP bind domain name",
                            "maxLength" : 256,
                            "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                           "type" : "string"
+                           "type" : "string",
+                           "typetext" : "<string>"
                         },
                         "capath" : {
                            "default" : "/etc/ssl/certs",
@@ -48392,6 +53996,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "check-connection" : {
+                           "default" : 0,
+                           "description" : "Check bind connection to the server.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
                         "client-id" : {
                            "description" : "OpenID Client ID",
                            "maxLength" : 256,
@@ -48445,8 +54056,8 @@ const apiSchema = [
                            "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.",
                            "maxLength" : 256,
                            "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
-                           "type" : "string"
+                           "type" : "string",
+                           "typetext" : "<string>"
                         },
                         "group_filter" : {
                            "description" : "LDAP filter for group sync.",
@@ -48553,7 +54164,7 @@ const apiSchema = [
                            "format" : "realm-sync-options",
                            "optional" : 1,
                            "type" : "string",
-                           "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=[acl];[properties];[entry]] [,scope=<users|groups|both>]"
+                           "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=([acl];[properties];[entry])|none] [,scope=<users|groups|both>]"
                         },
                         "sync_attributes" : {
                            "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write  'email=mail'. By default, each PVE user field is represented  by an LDAP attribute of the same name.",
@@ -48787,7 +54398,7 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "password" : {
-                                       "description" : "The current password.",
+                                       "description" : "The current password of the user performing the change.",
                                        "maxLength" : 64,
                                        "minLength" : 5,
                                        "optional" : 1,
@@ -48795,7 +54406,7 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -48824,7 +54435,7 @@ const apiSchema = [
                               }
                            },
                            "GET" : {
-                              "allowtoken" : 0,
+                              "allowtoken" : 1,
                               "description" : "Fetch a requested TFA entry if present.",
                               "method" : "GET",
                               "name" : "get_tfa_entry",
@@ -48837,7 +54448,7 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -48925,7 +54536,7 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "password" : {
-                                       "description" : "The current password.",
+                                       "description" : "The current password of the user performing the change.",
                                        "maxLength" : 64,
                                        "minLength" : 5,
                                        "optional" : 1,
@@ -48933,7 +54544,7 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -48969,7 +54580,7 @@ const apiSchema = [
                   ],
                   "info" : {
                      "GET" : {
-                        "allowtoken" : 0,
+                        "allowtoken" : 1,
                         "description" : "List TFA configurations of users.",
                         "method" : "GET",
                         "name" : "list_user_tfa",
@@ -48977,7 +54588,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -49039,6 +54650,12 @@ const apiSchema = [
                               },
                               "type" : "object"
                            },
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
                            "type" : "array"
                         }
                      },
@@ -49064,7 +54681,7 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "password" : {
-                                 "description" : "The current password.",
+                                 "description" : "The current password of the user performing the change.",
                                  "maxLength" : 64,
                                  "minLength" : 5,
                                  "optional" : 1,
@@ -49089,7 +54706,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -49151,7 +54768,7 @@ const apiSchema = [
             ],
             "info" : {
                "GET" : {
-                  "allowtoken" : 0,
+                  "allowtoken" : 1,
                   "description" : "List TFA configurations of users.",
                   "method" : "GET",
                   "name" : "list_tfa",
@@ -49205,6 +54822,16 @@ const apiSchema = [
                               },
                               "type" : "array"
                            },
+                           "tfa-locked-until" : {
+                              "description" : "Contains a timestamp until when a user is locked out of 2nd factors.",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "totp-locked" : {
+                              "description" : "True if the user is currently locked out of TOTP factors.",
+                              "optional" : 1,
+                              "type" : "boolean"
+                           },
                            "userid" : {
                               "description" : "User this entry belongs to.",
                               "type" : "string"
@@ -49212,35 +54839,13 @@ const apiSchema = [
                         },
                         "type" : "object"
                      },
-                     "type" : "array"
-                  }
-               },
-               "POST" : {
-                  "allowtoken" : 0,
-                  "description" : "Finish a u2f challenge.",
-                  "method" : "POST",
-                  "name" : "verify_tfa",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "response" : {
-                           "description" : "The response to the current authentication challenge.",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "properties" : {
-                        "ticket" : {
-                           "type" : "string"
+                     "links" : [
+                        {
+                           "href" : "{userid}",
+                           "rel" : "child"
                         }
-                     },
-                     "type" : "object"
+                     ],
+                     "type" : "array"
                   }
                }
             },
@@ -49274,8 +54879,8 @@ const apiSchema = [
                      "additionalProperties" : 0,
                      "properties" : {
                         "new-format" : {
-                           "default" : 0,
-                           "description" : "With webauthn the format of half-authenticated tickts changed. New clients should pass 1 here and not worry about the old format. The old format is deprecated and will be retired with PVE-8.0",
+                           "default" : 1,
+                           "description" : "This parameter is now ignored and assumed to be 1.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -49371,6 +54976,14 @@ const apiSchema = [
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
+                        "confirmation-password" : {
+                           "description" : "The current password of the user performing the change.",
+                           "maxLength" : 64,
+                           "minLength" : 5,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "password" : {
                            "description" : "The new password.",
                            "maxLength" : 64,
@@ -49379,7 +54992,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "userid" : {
-                           "description" : "User ID",
+                           "description" : "Full User ID, in the `name@realm` format.",
                            "format" : "pve-userid",
                            "maxLength" : 64,
                            "type" : "string",
@@ -49500,9 +55113,9 @@ const apiSchema = [
             "info" : {
                "DELETE" : {
                   "allowtoken" : 1,
-                  "description" : "Delete pool.",
+                  "description" : "Delete pool (deprecated, no support for nested pools, use 'DELETE /pools/?poolid={poolid}').",
                   "method" : "DELETE",
-                  "name" : "delete_pool",
+                  "name" : "delete_pool_deprecated",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
@@ -49530,7 +55143,7 @@ const apiSchema = [
                },
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Get pool configuration.",
+                  "description" : "Get pool configuration (deprecated, no support for nested pools, use 'GET /pools/?poolid={poolid}').",
                   "method" : "GET",
                   "name" : "read_pool",
                   "parameters" : {
@@ -49606,19 +55219,27 @@ const apiSchema = [
                },
                "PUT" : {
                   "allowtoken" : 1,
-                  "description" : "Update pool data.",
+                  "description" : "Update pool data (deprecated, no support for nested pools - use 'PUT /pools/?poolid={poolid}' instead).",
                   "method" : "PUT",
-                  "name" : "update_pool",
+                  "name" : "update_pool_deprecated",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
+                        "allow-move" : {
+                           "default" : 0,
+                           "description" : "Allow adding a guest even if already in another pool. The guest will be removed from its current pool and added to this one.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
                         "comment" : {
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
                         },
                         "delete" : {
-                           "description" : "Remove vms/storage (instead of adding it).",
+                           "default" : 0,
+                           "description" : "Remove the passed VMIDs and/or storage IDs instead of adding them.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -49629,14 +55250,14 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "storage" : {
-                           "description" : "List of storage IDs.",
+                           "description" : "List of storage IDs to add or remove from this pool.",
                            "format" : "pve-storage-id-list",
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
                         },
                         "vms" : {
-                           "description" : "List of virtual machines.",
+                           "description" : "List of guest VMIDs to add or remove from this pool.",
                            "format" : "pve-vmid-list",
                            "optional" : 1,
                            "type" : "string",
@@ -49666,21 +55287,106 @@ const apiSchema = [
          }
       ],
       "info" : {
+         "DELETE" : {
+            "allowtoken" : 1,
+            "description" : "Delete pool.",
+            "method" : "DELETE",
+            "name" : "delete_pool",
+            "parameters" : {
+               "additionalProperties" : 0,
+               "properties" : {
+                  "poolid" : {
+                     "format" : "pve-poolid",
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  }
+               }
+            },
+            "permissions" : {
+               "check" : [
+                  "perm",
+                  "/pool/{poolid}",
+                  [
+                     "Pool.Allocate"
+                  ]
+               ],
+               "description" : "You can only delete empty pools (no members)."
+            },
+            "protected" : 1,
+            "returns" : {
+               "type" : "null"
+            }
+         },
          "GET" : {
             "allowtoken" : 1,
-            "description" : "Pool index.",
+            "description" : "List pools or get pool configuration.",
             "method" : "GET",
             "name" : "index",
             "parameters" : {
-               "additionalProperties" : 0
+               "additionalProperties" : 0,
+               "properties" : {
+                  "poolid" : {
+                     "format" : "pve-poolid",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "type" : {
+                     "enum" : [
+                        "qemu",
+                        "lxc",
+                        "storage"
+                     ],
+                     "optional" : 1,
+                     "requires" : "poolid",
+                     "type" : "string"
+                  }
+               }
             },
             "permissions" : {
-               "description" : "List all pools where you have Pool.Audit permissions on /pool/<pool>.",
+               "description" : "List all pools where you have Pool.Audit permissions on /pool/<pool>, or the pool specific with {poolid}",
                "user" : "all"
             },
             "returns" : {
                "items" : {
                   "properties" : {
+                     "comment" : {
+                        "optional" : 1,
+                        "type" : "string"
+                     },
+                     "members" : {
+                        "items" : {
+                           "additionalProperties" : 1,
+                           "properties" : {
+                              "id" : {
+                                 "type" : "string"
+                              },
+                              "node" : {
+                                 "type" : "string"
+                              },
+                              "storage" : {
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "type" : {
+                                 "enum" : [
+                                    "qemu",
+                                    "lxc",
+                                    "openvz",
+                                    "storage"
+                                 ],
+                                 "type" : "string"
+                              },
+                              "vmid" : {
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              }
+                           },
+                           "type" : "object"
+                        },
+                        "optional" : 1,
+                        "type" : "array"
+                     },
                      "poolid" : {
                         "type" : "string"
                      }
@@ -49729,6 +55435,69 @@ const apiSchema = [
             "returns" : {
                "type" : "null"
             }
+         },
+         "PUT" : {
+            "allowtoken" : 1,
+            "description" : "Update pool.",
+            "method" : "PUT",
+            "name" : "update_pool",
+            "parameters" : {
+               "additionalProperties" : 0,
+               "properties" : {
+                  "allow-move" : {
+                     "default" : 0,
+                     "description" : "Allow adding a guest even if already in another pool. The guest will be removed from its current pool and added to this one.",
+                     "optional" : 1,
+                     "type" : "boolean",
+                     "typetext" : "<boolean>"
+                  },
+                  "comment" : {
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "delete" : {
+                     "default" : 0,
+                     "description" : "Remove the passed VMIDs and/or storage IDs instead of adding them.",
+                     "optional" : 1,
+                     "type" : "boolean",
+                     "typetext" : "<boolean>"
+                  },
+                  "poolid" : {
+                     "format" : "pve-poolid",
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "storage" : {
+                     "description" : "List of storage IDs to add or remove from this pool.",
+                     "format" : "pve-storage-id-list",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "vms" : {
+                     "description" : "List of guest VMIDs to add or remove from this pool.",
+                     "format" : "pve-vmid-list",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  }
+               }
+            },
+            "permissions" : {
+               "check" : [
+                  "perm",
+                  "/pool/{poolid}",
+                  [
+                     "Pool.Allocate"
+                  ]
+               ],
+               "description" : "You also need the right to modify permissions on any object you add/delete."
+            },
+            "protected" : 1,
+            "returns" : {
+               "type" : "null"
+            }
          }
       },
       "leaf" : 0,
@@ -49767,6 +55536,7 @@ const apiSchema = [
                   },
                   "repoid" : {
                      "description" : "The short git revision from which this version was build.",
+                     "pattern" : "[0-9a-fA-F]{8,64}",
                      "type" : "string"
                   },
                   "version" : {