]> 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 0414cbd6c308f51caf7d89d35ea2e25f3cd3e0ed..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"
-                                    },
-                                    "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,
+                           "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" : "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)"
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comment" : {
+                                       "description" : "Comment",
+                                       "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>"
+                                    }
+                                 }
                               },
-                              "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' 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,
+                                             "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"
-                              }
+                                 "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"
+                              }
                            },
-                           "GET" : {
+                           "POST" : {
                               "allowtoken" : 1,
-                              "description" : "List rules.",
-                              "method" : "GET",
-                              "name" : "get_rules",
+                              "description" : "Create a new gotify endpoint",
+                              "method" : "POST",
+                              "name" : "create_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"
+                                    "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' or 'icmpv6'/'ipv6-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' or 'icmpv6'/'ipv6-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,49 +2538,1732 @@ 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" : {
+                              "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",
+                                 "typetext" : "<array>"
+                              },
+                              "match-severity" : {
+                                 "description" : "Notification severities to match",
+                                 "items" : {
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array",
+                                 "typetext" : "<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",
+                                 "typetext" : "<string>"
+                              },
+                              "target" : {
+                                 "description" : "Targets to notify on match",
+                                 "items" : {
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array",
+                                 "typetext" : "<array>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/mapping/notifications",
+                              [
+                                 "Mapping.Modify"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "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" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Removes a node from the cluster configuration.",
+                              "method" : "DELETE",
+                              "name" : "delnode",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Adds a node to the cluster configuration. This call is for internal use.",
+                              "method" : "POST",
+                              "name" : "addnode",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "apiversion" : {
+                                       "description" : "The JOIN_API_VERSION of the new node.",
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer>"
+                                    },
+                                    "force" : {
+                                       "description" : "Do not throw error if node already exists.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "link[n]" : {
+                                       "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                       "format" : {
+                                          "address" : {
+                                             "default_key" : 1,
+                                             "description" : "Hostname (or IP) of this corosync link address.",
+                                             "format" : "address",
+                                             "format_description" : "IP",
+                                             "type" : "string"
+                                          },
+                                          "priority" : {
+                                             "default" : 0,
+                                             "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                             "maximum" : 255,
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          }
+                                       },
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "[address=]<IP> [,priority=<integer>]"
+                                    },
+                                    "new_node_ip" : {
+                                       "description" : "IP Address of node to add. Used as fallback if no links are given.",
+                                       "format" : "ip",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "nodeid" : {
+                                       "description" : "Node id for this node.",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - N)"
+                                    },
+                                    "votes" : {
+                                       "description" : "Number of votes for this node",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    }
+                                 }
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "properties" : {
+                                    "corosync_authkey" : {
+                                       "type" : "string"
+                                    },
+                                    "corosync_conf" : {
+                                       "type" : "string"
+                                    },
+                                    "warnings" : {
+                                       "items" : {
+                                          "type" : "string"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/config/nodes/{node}",
+                        "text" : "{node}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Corosync node list.",
+                        "method" : "GET",
+                        "name" : "nodes",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "node" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{node}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/config/nodes",
+                  "text" : "nodes"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get information needed to join this cluster over the connected node.",
+                        "method" : "GET",
+                        "name" : "join_info",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "default" : "current connected node",
+                                 "description" : "The node for which the joinee gets the nodeinfo. ",
+                                 "format" : "pve-node",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "config_digest" : {
+                                 "type" : "string"
+                              },
+                              "nodelist" : {
+                                 "items" : {
+                                    "additionalProperties" : 1,
+                                    "properties" : {
+                                       "name" : {
+                                          "description" : "The cluster node name.",
+                                          "format" : "pve-node",
+                                          "type" : "string"
+                                       },
+                                       "nodeid" : {
+                                          "description" : "Node id for this node.",
+                                          "minimum" : 1,
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "pve_addr" : {
+                                          "format" : "ip",
+                                          "type" : "string"
+                                       },
+                                       "pve_fp" : {
+                                          "description" : "Certificate SHA 256 fingerprint.",
+                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                          "type" : "string"
+                                       },
+                                       "quorum_votes" : {
+                                          "minimum" : 0,
+                                          "type" : "integer"
+                                       },
+                                       "ring0_addr" : {
+                                          "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                          "format" : {
+                                             "address" : {
+                                                "default_key" : 1,
+                                                "description" : "Hostname (or IP) of this corosync link address.",
+                                                "format" : "address",
+                                                "format_description" : "IP",
+                                                "type" : "string"
+                                             },
+                                             "priority" : {
+                                                "default" : 0,
+                                                "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                                "maximum" : 255,
+                                                "minimum" : 0,
+                                                "optional" : 1,
+                                                "type" : "integer"
+                                             }
+                                          },
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              },
+                              "preferred_node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string"
+                              },
+                              "totem" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Joins this node into an existing cluster. If no links are given, default to IP resolved by node's hostname on single link (fallback fails for clusters with multiple links).",
+                        "method" : "POST",
+                        "name" : "join",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "fingerprint" : {
+                                 "description" : "Certificate SHA 256 fingerprint.",
+                                 "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                 "type" : "string"
+                              },
+                              "force" : {
+                                 "description" : "Do not throw error if node already exists.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "hostname" : {
+                                 "description" : "Hostname (or IP) of an existing cluster member.",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "link[n]" : {
+                                 "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                                 "format" : {
+                                    "address" : {
+                                       "default_key" : 1,
+                                       "description" : "Hostname (or IP) of this corosync link address.",
+                                       "format" : "address",
+                                       "format_description" : "IP",
+                                       "type" : "string"
+                                    },
+                                    "priority" : {
+                                       "default" : 0,
+                                       "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                       "maximum" : 255,
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[address=]<IP> [,priority=<integer>]"
+                              },
+                              "nodeid" : {
+                                 "description" : "Node id for this node.",
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - N)"
+                              },
+                              "password" : {
+                                 "description" : "Superuser (root) password of peer node.",
+                                 "maxLength" : 128,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "votes" : {
+                                 "description" : "Number of votes for this node",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/config/join",
+                  "text" : "join"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get corosync totem protocol settings.",
+                        "method" : "GET",
+                        "name" : "totem",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "type" : "object"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/config/totem",
+                  "text" : "totem"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get QDevice status",
+                        "method" : "GET",
+                        "name" : "status",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "object"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/config/qdevice",
+                  "text" : "qdevice"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Directory index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "perm",
+                        "/",
+                        [
+                           "Sys.Audit"
+                        ]
+                     ]
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               },
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Generate new cluster configuration. If no links given, default to local IP address as link0.",
+                  "method" : "POST",
+                  "name" : "create",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "clustername" : {
+                           "description" : "The name of the cluster.",
+                           "format" : "pve-node",
+                           "maxLength" : 15,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "link[n]" : {
+                           "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)",
+                           "format" : {
+                              "address" : {
+                                 "default_key" : 1,
+                                 "description" : "Hostname (or IP) of this corosync link address.",
+                                 "format" : "address",
+                                 "format_description" : "IP",
+                                 "type" : "string"
+                              },
+                              "priority" : {
+                                 "default" : 0,
+                                 "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.",
+                                 "maximum" : 255,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[address=]<IP> [,priority=<integer>]"
+                        },
+                        "nodeid" : {
+                           "description" : "Node id for this node.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "votes" : {
+                           "description" : "Number of votes for this node.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        }
+                     }
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "string"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/config",
+            "text" : "config"
+         },
+         {
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Delete rule.",
+                                    "method" : "DELETE",
+                                    "name" : "delete_rule",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "digest" : {
+                                             "description" : "Prevent changes if current configuration file has 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" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete security group.",
+                              "method" : "DELETE",
+                              "name" : "delete_security_group",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "group" : {
+                                       "description" : "Security Group name.",
+                                       "maxLength" : 18,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List rules.",
+                              "method" : "GET",
+                              "name" : "get_rules",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "group" : {
+                                       "description" : "Security Group name.",
+                                       "maxLength" : 18,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "proxyto" : null,
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "pos" : {
+                                          "type" : "integer"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{pos}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create new rule.",
+                              "method" : "POST",
+                              "name" : "create_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "action" : {
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 0,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "description" : "Descriptive comment.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dest" : {
+                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has 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" : 0,
+                        "path" : "/cluster/firewall/groups/{group}",
+                        "text" : "{group}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List security groups.",
+                        "method" : "GET",
+                        "name" : "list_security_groups",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has 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"
+                        }
+                     },
+                     "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 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"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/groups",
+                  "text" : "groups"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete rule.",
+                              "method" : "DELETE",
+                              "name" : "delete_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has 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)"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : null,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get single rule data.",
+                              "method" : "GET",
+                              "name" : "get_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "pos" : {
+                                       "description" : "Update rule at position <pos>.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "proxyto" : null,
+                              "returns" : {
+                                 "properties" : {
+                                    "action" : {
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "dest" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "dport" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "icmp-type" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "iface" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "ipversion" : {
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "log" : {
+                                       "description" : "Log level for firewall rule",
+                                       "enum" : [
+                                          "emerg",
+                                          "alert",
+                                          "crit",
+                                          "err",
+                                          "warning",
+                                          "notice",
+                                          "info",
+                                          "debug",
+                                          "nolog"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "macro" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "pos" : {
+                                       "type" : "integer"
+                                    },
+                                    "proto" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "source" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "sport" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Modify rule data.",
+                              "method" : "PUT",
+                              "name" : "update_rule",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "action" : {
+                                       "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "optional" : 1,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "comment" : {
+                                       "description" : "Descriptive comment.",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "dest" : {
+                                       "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                       "format" : "pve-fw-addr-spec",
+                                       "maxLength" : 512,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has 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"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : null,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/cluster/firewall/rules/{pos}",
+                        "text" : "{pos}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List rules.",
+                        "method" : "GET",
+                        "name" : "get_rules",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "proxyto" : null,
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "pos" : {
+                                    "type" : "integer"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{pos}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create new rule.",
+                        "method" : "POST",
+                        "name" : "create_rule",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "action" : {
+                                 "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.",
+                                 "maxLength" : 20,
+                                 "minLength" : 2,
+                                 "optional" : 0,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              },
+                              "comment" : {
+                                 "description" : "Descriptive comment.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "dest" : {
+                                 "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.",
+                                 "format" : "pve-fw-addr-spec",
+                                 "maxLength" : 512,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has 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,
@@ -2461,8 +4391,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>"
@@ -2547,8 +4477,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>"
@@ -2662,8 +4592,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"
                                        },
@@ -2762,8 +4692,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"
                                  },
@@ -2800,8 +4730,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>"
@@ -2855,8 +4785,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>"
@@ -2934,8 +4864,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>"
@@ -3006,8 +4936,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"
                                  },
@@ -3174,8 +5104,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>"
@@ -3342,6 +5272,9 @@ const apiSchema = [
                                  "ref" : {
                                     "type" : "string"
                                  },
+                                 "scope" : {
+                                    "type" : "string"
+                                 },
                                  "type" : {
                                     "enum" : [
                                        "alias",
@@ -3628,7 +5561,7 @@ 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.",
+                                 "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"
                                  },
@@ -3636,6 +5569,13 @@ const apiSchema = [
                                  "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,
@@ -3661,7 +5601,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"
@@ -3670,7 +5610,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",
@@ -3709,12 +5649,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,
@@ -3811,9 +5780,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.",
@@ -3830,7 +5800,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>"
@@ -3969,7 +5939,7 @@ 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.",
+                           "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"
                            },
@@ -3977,6 +5947,13 @@ const apiSchema = [
                            "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",
@@ -4003,7 +5980,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"
@@ -4012,7 +5989,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",
@@ -4051,12 +6028,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,
@@ -4153,9 +6159,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.",
@@ -4172,7 +6179,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>"
@@ -4514,8 +6521,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>"
@@ -4807,8 +6814,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>"
@@ -5257,12 +7264,14 @@ const apiSchema = [
                                           "ad",
                                           "ali",
                                           "anx",
+                                          "artfiles",
                                           "arvan",
                                           "aurora",
                                           "autodns",
                                           "aws",
                                           "azion",
                                           "azure",
+                                          "bookmyname",
                                           "bunny",
                                           "cf",
                                           "clouddns",
@@ -5278,6 +7287,7 @@ const apiSchema = [
                                           "desec",
                                           "df",
                                           "dgon",
+                                          "dnsexit",
                                           "dnshome",
                                           "dnsimple",
                                           "dnsservices",
@@ -5375,6 +7385,7 @@ const apiSchema = [
                                           "servercow",
                                           "simply",
                                           "tele3",
+                                          "tencent",
                                           "transip",
                                           "udr",
                                           "ultra",
@@ -5410,8 +7421,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>"
@@ -5535,12 +7546,14 @@ const apiSchema = [
                                     "ad",
                                     "ali",
                                     "anx",
+                                    "artfiles",
                                     "arvan",
                                     "aurora",
                                     "autodns",
                                     "aws",
                                     "azion",
                                     "azure",
+                                    "bookmyname",
                                     "bunny",
                                     "cf",
                                     "clouddns",
@@ -5556,6 +7569,7 @@ const apiSchema = [
                                     "desec",
                                     "df",
                                     "dgon",
+                                    "dnsexit",
                                     "dnshome",
                                     "dnsimple",
                                     "dnsservices",
@@ -5653,6 +7667,7 @@ const apiSchema = [
                                     "servercow",
                                     "simply",
                                     "tele3",
+                                    "tencent",
                                     "transip",
                                     "udr",
                                     "ultra",
@@ -5896,6 +7911,20 @@ const apiSchema = [
                                  "pattern" : "^https?://.*",
                                  "type" : "string"
                               },
+                              "eab-hmac-key" : {
+                                 "description" : "HMAC key for External Account Binding.",
+                                 "optional" : 1,
+                                 "requires" : "eab-kid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "eab-kid" : {
+                                 "description" : "Key Identifier for External Account Binding.",
+                                 "optional" : 1,
+                                 "requires" : "eab-hmac-key",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "name" : {
                                  "default" : "default",
                                  "description" : "ACME account config file name.",
@@ -5927,7 +7956,7 @@ const apiSchema = [
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Retrieve ACME TermsOfService URL from CA.",
+                        "description" : "Retrieve ACME TermsOfService URL from CA. Deprecated, please use /cluster/acme/meta.",
                         "method" : "GET",
                         "name" : "get_tos",
                         "parameters" : {
@@ -5956,6 +7985,69 @@ const apiSchema = [
                   "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.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "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" : 1,
+                  "path" : "/cluster/acme/meta",
+                  "text" : "meta"
+               },
                {
                   "info" : {
                      "GET" : {
@@ -7205,8 +9297,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>"
@@ -7233,7 +9325,7 @@ const apiSchema = [
                                                 "type" : "string"
                                              },
                                              "iommugroup" : {
-                                                "description" : "The IOMMU group in which the device is to be expected in.Used for detecting hardware changes.",
+                                                "description" : "The IOMMU group in which the device is to be expected in. Used for detecting hardware changes.",
                                                 "optional" : 1,
                                                 "type" : "integer"
                                              },
@@ -7261,6 +9353,8 @@ const apiSchema = [
                                        "typetext" : "<array>"
                                     },
                                     "mdev" : {
+                                       "default" : 0,
+                                       "description" : "Marks the device(s) as being capable of providing mediated devices.",
                                        "optional" : 1,
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
@@ -7400,7 +9494,7 @@ const apiSchema = [
                                           "type" : "string"
                                        },
                                        "iommugroup" : {
-                                          "description" : "The IOMMU group in which the device is to be expected in.Used for detecting hardware changes.",
+                                          "description" : "The IOMMU group in which the device is to be expected in. Used for detecting hardware changes.",
                                           "optional" : 1,
                                           "type" : "integer"
                                        },
@@ -7428,6 +9522,8 @@ const apiSchema = [
                                  "typetext" : "<array>"
                               },
                               "mdev" : {
+                                 "default" : 0,
+                                 "description" : "Marks the device(s) as being capable of providing mediated devices.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -7550,21 +9646,21 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "description" : {
-                                       "description" : "Description of the logical PCI device.",
+                                       "description" : "Description of the logical USB device.",
                                        "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,
+                                       "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.",
+                                       "description" : "The ID of the logical USB mapping.",
                                        "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
@@ -7702,14 +9798,14 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "description" : {
-                                 "description" : "Description of the logical PCI device.",
+                                 "description" : "Description of the logical USB device.",
                                  "maxLength" : 4096,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
                               "id" : {
-                                 "description" : "The ID of the logical PCI mapping.",
+                                 "description" : "The ID of the logical USB mapping.",
                                  "format" : "pve-configid",
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -7832,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" : {
@@ -7880,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"
@@ -7908,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>"
@@ -7951,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" : {
@@ -8000,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" : {
@@ -8025,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",
@@ -8066,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/vnets/{vnet}/subnets",
+                                          "/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/zones/{zone}/{vnet}",
                                           [
                                              "SDN.Allocate"
                                           ]
@@ -8081,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" : {
@@ -8104,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" : {
@@ -8146,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"
@@ -8182,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>"
@@ -8216,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" : {
@@ -8259,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" : {
@@ -8329,7 +10593,7 @@ const apiSchema = [
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/sdn/vnets",
+                              "/sdn/zones/{zone}",
                               [
                                  "SDN.Allocate"
                               ]
@@ -8368,7 +10632,7 @@ const apiSchema = [
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/sdn/zones",
+                                    "/sdn/zones/{zone}",
                                     [
                                        "SDN.Allocate"
                                     ]
@@ -8459,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>"
@@ -8599,7 +10871,7 @@ const apiSchema = [
                               "permissions" : {
                                  "check" : [
                                     "perm",
-                                    "/sdn/zones",
+                                    "/sdn/zones/{zone}",
                                     [
                                        "SDN.Allocate"
                                     ]
@@ -8659,6 +10931,10 @@ const apiSchema = [
                         "returns" : {
                            "items" : {
                               "properties" : {
+                                 "dhcp" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
                                  "dns" : {
                                     "optional" : 1,
                                     "type" : "string"
@@ -8680,7 +10956,8 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "pending" : {
-                                    "optional" : 1
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
                                  "reversedns" : {
                                     "optional" : 1,
@@ -8739,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,
@@ -9012,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>"
@@ -9029,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,
@@ -9098,7 +11403,8 @@ const apiSchema = [
                                  "enum" : [
                                     "bgp",
                                     "evpn",
-                                    "faucet"
+                                    "faucet",
+                                    "isis"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -9116,7 +11422,8 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "pending" : {
-                                    "optional" : 1
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
                                  "state" : {
                                     "optional" : 1,
@@ -9175,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,
@@ -9200,7 +11527,8 @@ const apiSchema = [
                                  "enum" : [
                                     "bgp",
                                     "evpn",
-                                    "faucet"
+                                    "faucet",
+                                    "isis"
                                  ],
                                  "format" : "pve-configid",
                                  "type" : "string"
@@ -9230,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,
@@ -9307,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>"
@@ -9352,7 +11714,7 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 1,
+                        "leaf" : 0,
                         "path" : "/cluster/sdn/ipams/{ipam}",
                         "text" : "{ipam}"
                      }
@@ -9544,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>"
@@ -9725,7 +12087,7 @@ const apiSchema = [
                   "permissions" : {
                      "check" : [
                         "perm",
-                        "/",
+                        "/sdn",
                         [
                            "SDN.Audit"
                         ]
@@ -9933,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"
                            },
@@ -9957,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"
                            }
@@ -10206,6 +12571,7 @@ const apiSchema = [
                         "language" : {
                            "description" : "Default GUI language.",
                            "enum" : [
+                              "ar",
                               "ca",
                               "da",
                               "de",
@@ -10214,10 +12580,14 @@ const apiSchema = [
                               "eu",
                               "fa",
                               "fr",
+                              "hr",
                               "he",
                               "it",
                               "ja",
+                              "ka",
+                              "kr",
                               "nb",
+                              "nl",
                               "nn",
                               "pl",
                               "pt_BR",
@@ -10225,6 +12595,7 @@ const apiSchema = [
                               "sl",
                               "sv",
                               "tr",
+                              "ukr",
                               "zh_CN",
                               "zh_TW"
                            ],
@@ -10232,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.",
@@ -10303,21 +12676,58 @@ const apiSchema = [
                         "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" : "Control when the daily update job should send out notification mails.",
+                                 "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" : "Control how often the daily update job should send out notification mails:\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"
+                                 "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" : "package-updates=<auto|always|never>"
+                           "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`.",
@@ -10403,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'.",
@@ -10647,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>"
@@ -10845,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>"
@@ -11071,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>"
@@ -11218,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>"
@@ -11325,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>"
@@ -11427,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"
                                                    },
@@ -11529,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>"
@@ -11643,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>"
@@ -11800,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"
                                                          },
@@ -11930,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"
                                                    },
@@ -11968,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>"
@@ -12175,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>"
@@ -12441,6 +14851,12 @@ const apiSchema = [
                                                    "name" : {
                                                       "type" : "string"
                                                    },
+                                                   "ref" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "scope" : {
+                                                      "type" : "string"
+                                                   },
                                                    "type" : {
                                                       "enum" : [
                                                          "alias",
@@ -14264,6 +16680,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "ciupgrade" : {
+                                             "default" : 1,
                                              "description" : "cloud-init: do an automatic package upgrade after the first boot.",
                                              "optional" : 1,
                                              "type" : "boolean"
@@ -14319,7 +16736,7 @@ const apiSchema = [
                                              "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. Ignored for VMs with arch=aarc64 (ARM).",
+                                                   "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"
@@ -14820,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 MiB. 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,
@@ -15068,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 - 6.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).",
@@ -15347,326 +17789,333 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "scsi[n]" : {
-                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
+                                                "replicate" : {
+                                                   "default" : 1,
+                                                   "description" : "Whether the drive should considered for replication jobs.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "rerror" : {
+                                                   "description" : "Read error action.",
+                                                   "enum" : [
+                                                      "ignore",
+                                                      "report",
+                                                      "stop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "secs" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "serial" : {
+                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                   "format" : "urlencoded",
+                                                   "format_description" : "serial",
+                                                   "maxLength" : 60,
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "shared" : {
+                                                   "default" : 0,
+                                                   "description" : "Mark this locally-managed volume as available on all nodes",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "snapshot" : {
+                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "ssd" : {
+                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "trans" : {
+                                                   "description" : "Force disk geometry bios translation mode.",
+                                                   "enum" : [
+                                                      "none",
+                                                      "lba",
+                                                      "auto"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                },
+                                                "werror" : {
+                                                   "description" : "Write error action.",
+                                                   "enum" : [
+                                                      "enospc",
+                                                      "ignore",
+                                                      "report",
+                                                      "stop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "wwn" : {
+                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                   "format_description" : "wwn",
+                                                   "optional" : 1,
+                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "scsi[n]" : {
+                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).",
+                                             "format" : {
+                                                "aio" : {
+                                                   "description" : "AIO type to use.",
+                                                   "enum" : [
+                                                      "native",
+                                                      "threads",
+                                                      "io_uring"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "backup" : {
+                                                   "description" : "Whether the drive should be included when making backups.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "bps" : {
+                                                   "description" : "Maximum r/w speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_max_length" : {
+                                                   "description" : "Maximum length of I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd" : {
+                                                   "description" : "Maximum read speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd_length" : {
+                                                   "alias" : "bps_rd_max_length"
+                                                },
+                                                "bps_rd_max_length" : {
+                                                   "description" : "Maximum length of read I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr" : {
+                                                   "description" : "Maximum write speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr_length" : {
+                                                   "alias" : "bps_wr_max_length"
+                                                },
+                                                "bps_wr_max_length" : {
+                                                   "description" : "Maximum length of write I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "cache" : {
+                                                   "description" : "The drive's cache mode",
+                                                   "enum" : [
+                                                      "none",
+                                                      "writethrough",
+                                                      "writeback",
+                                                      "unsafe",
+                                                      "directsync"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "cyls" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "detect_zeroes" : {
+                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "discard" : {
+                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                   "enum" : [
+                                                      "ignore",
+                                                      "on"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "format" : {
+                                                   "description" : "The drive's backing file's data format.",
+                                                   "enum" : [
+                                                      "raw",
+                                                      "cow",
+                                                      "qcow",
+                                                      "qed",
+                                                      "qcow2",
+                                                      "vmdk",
+                                                      "cloop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "heads" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops" : {
+                                                   "description" : "Maximum r/w I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_max" : {
+                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_max_length" : {
+                                                   "description" : "Maximum length of I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd" : {
+                                                   "description" : "Maximum read I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd_length" : {
+                                                   "alias" : "iops_rd_max_length"
+                                                },
+                                                "iops_rd_max" : {
+                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd_max_length" : {
+                                                   "description" : "Maximum length of read I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr" : {
+                                                   "description" : "Maximum write I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr_length" : {
+                                                   "alias" : "iops_wr_max_length"
+                                                },
+                                                "iops_wr_max" : {
+                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr_max_length" : {
+                                                   "description" : "Maximum length of write I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iothread" : {
+                                                   "description" : "Whether to use iothreads for this drive",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "mbps" : {
+                                                   "description" : "Maximum r/w speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_max" : {
+                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_rd" : {
+                                                   "description" : "Maximum read speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_rd_max" : {
+                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_wr" : {
+                                                   "description" : "Maximum write speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_wr_max" : {
+                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "media" : {
+                                                   "default" : "disk",
+                                                   "description" : "The drive's media type.",
+                                                   "enum" : [
+                                                      "cdrom",
+                                                      "disk"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "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" : {
@@ -15749,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"
                                                 },
@@ -15988,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,
@@ -16350,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"
                                           },
@@ -16542,6 +19007,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "ciupgrade" : {
+                                             "default" : 1,
                                              "description" : "cloud-init: do an automatic package upgrade after the first boot.",
                                              "optional" : 1,
                                              "type" : "boolean",
@@ -16614,7 +19080,7 @@ const apiSchema = [
                                              "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. Ignored for VMs with arch=aarc64 (ARM).",
+                                                   "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"
@@ -17147,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 MiB. 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,
@@ -17410,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 - 6.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).",
@@ -17706,334 +20198,341 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
-                                                "replicate" : {
-                                                   "default" : 1,
-                                                   "description" : "Whether the drive should considered for replication jobs.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "rerror" : {
-                                                   "description" : "Read error action.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "secs" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "serial" : {
-                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                                   "format" : "urlencoded",
-                                                   "format_description" : "serial",
-                                                   "maxLength" : 60,
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "shared" : {
-                                                   "default" : 0,
-                                                   "description" : "Mark this locally-managed volume as available on all nodes",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "snapshot" : {
-                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "ssd" : {
-                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "trans" : {
-                                                   "description" : "Force disk geometry bios translation mode.",
-                                                   "enum" : [
-                                                      "none",
-                                                      "lba",
-                                                      "auto"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                },
-                                                "werror" : {
-                                                   "description" : "Write error action.",
-                                                   "enum" : [
-                                                      "enospc",
-                                                      "ignore",
-                                                      "report",
-                                                      "stop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "wwn" : {
-                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                                   "format_description" : "wwn",
-                                                   "optional" : 1,
-                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                                   "type" : "string"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
-                                          },
-                                          "scsi[n]" : {
-                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
-                                             "format" : {
-                                                "aio" : {
-                                                   "description" : "AIO type to use.",
-                                                   "enum" : [
-                                                      "native",
-                                                      "threads",
-                                                      "io_uring"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "backup" : {
-                                                   "description" : "Whether the drive should be included when making backups.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "bps" : {
-                                                   "description" : "Maximum r/w speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd" : {
-                                                   "description" : "Maximum read speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_rd_length" : {
-                                                   "alias" : "bps_rd_max_length"
-                                                },
-                                                "bps_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr" : {
-                                                   "description" : "Maximum write speed in bytes per second.",
-                                                   "format_description" : "bps",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "bps_wr_length" : {
-                                                   "alias" : "bps_wr_max_length"
-                                                },
-                                                "bps_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "cache" : {
-                                                   "description" : "The drive's cache mode",
-                                                   "enum" : [
-                                                      "none",
-                                                      "writethrough",
-                                                      "writeback",
-                                                      "unsafe",
-                                                      "directsync"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "cyls" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "detect_zeroes" : {
-                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "discard" : {
-                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
-                                                   "enum" : [
-                                                      "ignore",
-                                                      "on"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "file" : {
-                                                   "default_key" : 1,
-                                                   "description" : "The drive's backing volume.",
-                                                   "format" : "pve-volume-id-or-qm-path",
-                                                   "format_description" : "volume",
-                                                   "type" : "string"
-                                                },
-                                                "format" : {
-                                                   "description" : "The drive's backing file's data format.",
-                                                   "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "heads" : {
-                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "import-from" : {
-                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
-                                                   "format" : "pve-volume-id-or-absolute-path",
-                                                   "format_description" : "source volume",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "iops" : {
-                                                   "description" : "Maximum r/w I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max" : {
-                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_max_length" : {
-                                                   "description" : "Maximum length of I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd" : {
-                                                   "description" : "Maximum read I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_length" : {
-                                                   "alias" : "iops_rd_max_length"
-                                                },
-                                                "iops_rd_max" : {
-                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_rd_max_length" : {
-                                                   "description" : "Maximum length of read I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr" : {
-                                                   "description" : "Maximum write I/O in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_length" : {
-                                                   "alias" : "iops_wr_max_length"
-                                                },
-                                                "iops_wr_max" : {
-                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                                   "format_description" : "iops",
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iops_wr_max_length" : {
-                                                   "description" : "Maximum length of write I/O bursts in seconds.",
-                                                   "format_description" : "seconds",
-                                                   "minimum" : 1,
-                                                   "optional" : 1,
-                                                   "type" : "integer"
-                                                },
-                                                "iothread" : {
-                                                   "description" : "Whether to use iothreads for this drive",
-                                                   "optional" : 1,
-                                                   "type" : "boolean"
-                                                },
-                                                "mbps" : {
-                                                   "description" : "Maximum r/w speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_max" : {
-                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd" : {
-                                                   "description" : "Maximum read speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_rd_max" : {
-                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr" : {
-                                                   "description" : "Maximum write speed in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "mbps_wr_max" : {
-                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                                   "format_description" : "mbps",
-                                                   "optional" : 1,
-                                                   "type" : "number"
-                                                },
-                                                "media" : {
-                                                   "default" : "disk",
-                                                   "description" : "The drive's media type.",
-                                                   "enum" : [
-                                                      "cdrom",
-                                                      "disk"
-                                                   ],
+                                                "replicate" : {
+                                                   "default" : 1,
+                                                   "description" : "Whether the drive should considered for replication jobs.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "rerror" : {
+                                                   "description" : "Read error action.",
+                                                   "enum" : [
+                                                      "ignore",
+                                                      "report",
+                                                      "stop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "secs" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "serial" : {
+                                                   "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                                   "format" : "urlencoded",
+                                                   "format_description" : "serial",
+                                                   "maxLength" : 60,
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "shared" : {
+                                                   "default" : 0,
+                                                   "description" : "Mark this locally-managed volume as available on all nodes",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "snapshot" : {
+                                                   "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "ssd" : {
+                                                   "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "trans" : {
+                                                   "description" : "Force disk geometry bios translation mode.",
+                                                   "enum" : [
+                                                      "none",
+                                                      "lba",
+                                                      "auto"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                },
+                                                "werror" : {
+                                                   "description" : "Write error action.",
+                                                   "enum" : [
+                                                      "enospc",
+                                                      "ignore",
+                                                      "report",
+                                                      "stop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "wwn" : {
+                                                   "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                                   "format_description" : "wwn",
+                                                   "optional" : 1,
+                                                   "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                          },
+                                          "scsi[n]" : {
+                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "format" : {
+                                                "aio" : {
+                                                   "description" : "AIO type to use.",
+                                                   "enum" : [
+                                                      "native",
+                                                      "threads",
+                                                      "io_uring"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "backup" : {
+                                                   "description" : "Whether the drive should be included when making backups.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "bps" : {
+                                                   "description" : "Maximum r/w speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_max_length" : {
+                                                   "description" : "Maximum length of I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd" : {
+                                                   "description" : "Maximum read speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd_length" : {
+                                                   "alias" : "bps_rd_max_length"
+                                                },
+                                                "bps_rd_max_length" : {
+                                                   "description" : "Maximum length of read I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr" : {
+                                                   "description" : "Maximum write speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr_length" : {
+                                                   "alias" : "bps_wr_max_length"
+                                                },
+                                                "bps_wr_max_length" : {
+                                                   "description" : "Maximum length of write I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "cache" : {
+                                                   "description" : "The drive's cache mode",
+                                                   "enum" : [
+                                                      "none",
+                                                      "writethrough",
+                                                      "writeback",
+                                                      "unsafe",
+                                                      "directsync"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "cyls" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "detect_zeroes" : {
+                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "discard" : {
+                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                   "enum" : [
+                                                      "ignore",
+                                                      "on"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "format" : {
+                                                   "description" : "The drive's backing file's data format.",
+                                                   "enum" : [
+                                                      "raw",
+                                                      "cow",
+                                                      "qcow",
+                                                      "qed",
+                                                      "qcow2",
+                                                      "vmdk",
+                                                      "cloop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "heads" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific head count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "import-from" : {
+                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                   "format" : "pve-volume-id-or-absolute-path",
+                                                   "format_description" : "source volume",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "iops" : {
+                                                   "description" : "Maximum r/w I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_max" : {
+                                                   "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_max_length" : {
+                                                   "description" : "Maximum length of I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd" : {
+                                                   "description" : "Maximum read I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd_length" : {
+                                                   "alias" : "iops_rd_max_length"
+                                                },
+                                                "iops_rd_max" : {
+                                                   "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_rd_max_length" : {
+                                                   "description" : "Maximum length of read I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr" : {
+                                                   "description" : "Maximum write I/O in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr_length" : {
+                                                   "alias" : "iops_wr_max_length"
+                                                },
+                                                "iops_wr_max" : {
+                                                   "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                                   "format_description" : "iops",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iops_wr_max_length" : {
+                                                   "description" : "Maximum length of write I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "iothread" : {
+                                                   "description" : "Whether to use iothreads for this drive",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "mbps" : {
+                                                   "description" : "Maximum r/w speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_max" : {
+                                                   "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_rd" : {
+                                                   "description" : "Maximum read speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_rd_max" : {
+                                                   "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_wr" : {
+                                                   "description" : "Maximum write speed in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "mbps_wr_max" : {
+                                                   "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                                   "format_description" : "mbps",
+                                                   "optional" : 1,
+                                                   "type" : "number"
+                                                },
+                                                "media" : {
+                                                   "default" : "disk",
+                                                   "description" : "The drive's media type.",
+                                                   "enum" : [
+                                                      "cdrom",
+                                                      "disk"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "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" : {
@@ -18116,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"
                                                 },
@@ -18140,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",
@@ -18384,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,
@@ -18417,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]" : {
@@ -18763,9 +21277,10 @@ const apiSchema = [
                                           "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.",
@@ -18972,6 +21487,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "ciupgrade" : {
+                                             "default" : 1,
                                              "description" : "cloud-init: do an automatic package upgrade after the first boot.",
                                              "optional" : 1,
                                              "type" : "boolean",
@@ -19044,7 +21560,7 @@ const apiSchema = [
                                              "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. Ignored for VMs with arch=aarc64 (ARM).",
+                                                   "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"
@@ -19577,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 MiB. 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,
@@ -19840,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 - 6.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).",
@@ -20466,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,
@@ -20546,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"
                                                 },
@@ -20570,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",
@@ -20814,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,
@@ -20847,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]" : {
@@ -21193,9 +23757,10 @@ const apiSchema = [
                                           "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.",
@@ -21457,7 +24022,9 @@ const apiSchema = [
                                        "check" : [
                                           "perm",
                                           "/vms/{vmid}",
-                                          "VM.Config.Cloudinit"
+                                          [
+                                             "VM.Config.Cloudinit"
+                                          ]
                                        ]
                                     },
                                     "protected" : 1,
@@ -21561,7 +24128,7 @@ const apiSchema = [
                                              "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>"
@@ -21859,6 +24426,14 @@ const apiSchema = [
                                                    "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,
@@ -21967,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.",
@@ -22064,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" : {
@@ -22090,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,
@@ -22189,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" : {
@@ -22336,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,
@@ -22699,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.",
@@ -23135,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.",
@@ -23731,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.",
@@ -25054,6 +27658,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "ciupgrade" : {
+                                 "default" : 1,
                                  "description" : "cloud-init: do an automatic package upgrade after the first boot.",
                                  "optional" : 1,
                                  "type" : "boolean",
@@ -25112,7 +27717,7 @@ const apiSchema = [
                                  "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. Ignored for VMs with arch=aarc64 (ARM).",
+                                       "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"
@@ -25623,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>"
                               },
@@ -25652,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 MiB. 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,
@@ -25915,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 - 6.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).",
@@ -26541,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,
@@ -26621,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"
                                     },
@@ -26645,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",
@@ -26764,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,
@@ -26904,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,
@@ -26937,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]" : {
@@ -27283,9 +29936,10 @@ const apiSchema = [
                               "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.",
@@ -27436,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"
@@ -27952,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,
@@ -28624,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,
@@ -29347,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>"
@@ -29545,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>"
@@ -29771,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>"
@@ -29918,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>"
@@ -30025,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>"
@@ -30127,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"
                                                    },
@@ -30229,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>"
@@ -30343,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>"
@@ -30500,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"
                                                          },
@@ -30630,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"
                                                    },
@@ -30668,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>"
@@ -30875,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>"
@@ -31141,6 +33873,12 @@ const apiSchema = [
                                                    "name" : {
                                                       "type" : "string"
                                                    },
+                                                   "ref" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "scope" : {
+                                                      "type" : "string"
+                                                   },
                                                    "type" : {
                                                       "enum" : [
                                                          "alias",
@@ -31682,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.",
@@ -32009,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.",
@@ -32438,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.",
@@ -33599,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" : {
@@ -34038,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" : {
@@ -34466,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,
@@ -34669,6 +37516,51 @@ const apiSchema = [
                               "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" : {
@@ -35222,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.",
@@ -35242,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,
@@ -35256,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."
                                     }
                                  }
                               },
@@ -35277,331 +38176,14 @@ const apiSchema = [
                               "info" : {
                                  "DELETE" : {
                                     "allowtoken" : 1,
-                                    "description" : "Destroy Ceph Metadata Server",
-                                    "method" : "DELETE",
-                                    "name" : "destroymds",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "name" : {
-                                             "description" : "The name (ID) of the mds",
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create Ceph Metadata Server (MDS)",
-                                    "method" : "POST",
-                                    "name" : "createmds",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "hotstandby" : {
-                                             "default" : "0",
-                                             "description" : "Determines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "default" : "nodename",
-                                             "description" : "The ID for the mds, when omitted the same as the nodename",
-                                             "maxLength" : 200,
-                                             "optional" : 1,
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/mds/{name}",
-                              "text" : "{name}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "MDS directory index.",
-                              "method" : "GET",
-                              "name" : "index",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "addr" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "host" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "name" : {
-                                          "description" : "The name (ID) for the MDS"
-                                       },
-                                       "rank" : {
-                                          "optional" : 1,
-                                          "type" : "integer"
-                                       },
-                                       "standby_replay" : {
-                                          "description" : "If true, the standby MDS is polling the active MDS for faster recovery (hot standby).",
-                                          "optional" : 1,
-                                          "type" : "boolean"
-                                       },
-                                       "state" : {
-                                          "description" : "State of the MDS",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/mds",
-                        "text" : "mds"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Destroy Ceph Manager.",
-                                    "method" : "DELETE",
-                                    "name" : "destroymgr",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "The ID of the manager",
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "POST" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Create Ceph Manager",
-                                    "method" : "POST",
-                                    "name" : "createmgr",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "id" : {
-                                             "description" : "The ID for the manager, when omitted the same as the nodename",
-                                             "maxLength" : 200,
-                                             "optional" : 1,
-                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
-                                             "type" : "string"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Modify"
-                                          ]
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/mgr/{id}",
-                              "text" : "{id}"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "MGR directory index.",
-                              "method" : "GET",
-                              "name" : "index",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "addr" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "host" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "name" : {
-                                          "description" : "The name (ID) for the MGR"
-                                       },
-                                       "state" : {
-                                          "description" : "State of the MGR",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/mgr",
-                        "text" : "mgr"
-                     },
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "DELETE" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Destroy Ceph Monitor and Manager.",
+                                    "description" : "Destroy Ceph Metadata Server",
                                     "method" : "DELETE",
-                                    "name" : "destroymon",
+                                    "name" : "destroymds",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "monid" : {
-                                             "description" : "Monitor ID",
+                                          "name" : {
+                                             "description" : "The name (ID) of the mds",
                                              "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
                                              "type" : "string"
                                           },
@@ -35630,21 +38212,22 @@ const apiSchema = [
                                  },
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Create Ceph Monitor and Manager",
+                                    "description" : "Create Ceph Metadata Server (MDS)",
                                     "method" : "POST",
-                                    "name" : "createmon",
+                                    "name" : "createmds",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "mon-address" : {
-                                             "description" : "Overwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph.",
-                                             "format" : "ip-list",
+                                          "hotstandby" : {
+                                             "default" : "0",
+                                             "description" : "Determines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources.",
                                              "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
                                           },
-                                          "monid" : {
-                                             "description" : "The ID for the monitor, when omitted the same as the nodename",
+                                          "name" : {
+                                             "default" : "nodename",
+                                             "description" : "The ID for the mds, when omitted the same as the nodename",
                                              "maxLength" : 200,
                                              "optional" : 1,
                                              "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
@@ -35675,16 +38258,16 @@ const apiSchema = [
                                  }
                               },
                               "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/mon/{monid}",
-                              "text" : "{monid}"
+                              "path" : "/nodes/{node}/ceph/mds/{name}",
+                              "text" : "{name}"
                            }
                         ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get Ceph monitor list.",
+                              "description" : "MDS directory index.",
                               "method" : "GET",
-                              "name" : "listmon",
+                              "name" : "index",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
@@ -35717,39 +38300,24 @@ const apiSchema = [
                                           "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "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"
+                                       "name" : {
+                                          "description" : "The name (ID) for the MDS"
                                        },
                                        "rank" : {
                                           "optional" : 1,
                                           "type" : "integer"
                                        },
-                                       "service" : {
+                                       "standby_replay" : {
+                                          "description" : "If true, the standby MDS is polling the active MDS for faster recovery (hot standby).",
                                           "optional" : 1,
-                                          "type" : "integer"
+                                          "type" : "boolean"
                                        },
                                        "state" : {
-                                          "optional" : 1,
+                                          "description" : "State of the MDS",
                                           "type" : "string"
                                        }
                                     },
@@ -35766,49 +38334,69 @@ const apiSchema = [
                            }
                         },
                         "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/mon",
-                        "text" : "mon"
+                        "path" : "/nodes/{node}/ceph/mds",
+                        "text" : "mds"
                      },
                      {
                         "children" : [
                            {
                               "info" : {
-                                 "POST" : {
+                                 "DELETE" : {
                                     "allowtoken" : 1,
-                                    "description" : "Create a Ceph filesystem",
-                                    "method" : "POST",
-                                    "name" : "createfs",
+                                    "description" : "Destroy Ceph Manager.",
+                                    "method" : "DELETE",
+                                    "name" : "destroymgr",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "add-storage" : {
-                                             "default" : 0,
-                                             "description" : "Configure the created CephFS as storage for this cluster.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
+                                          "id" : {
+                                             "description" : "The ID of the manager",
+                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                             "type" : "string"
                                           },
-                                          "name" : {
-                                             "default" : "cephfs",
-                                             "description" : "The ceph filesystem name.",
-                                             "optional" : 1,
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
                                              "type" : "string",
                                              "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Create Ceph Manager",
+                                    "method" : "POST",
+                                    "name" : "createmgr",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "id" : {
+                                             "description" : "The ID for the manager, when omitted the same as the nodename",
+                                             "maxLength" : 200,
+                                             "optional" : 1,
+                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                             "type" : "string"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
                                              "format" : "pve-node",
                                              "type" : "string",
                                              "typetext" : "<string>"
-                                          },
-                                          "pg_num" : {
-                                             "default" : 128,
-                                             "description" : "Number of placement groups for the backing data pool. The metadata pool will use a quarter of this.",
-                                             "maximum" : 32768,
-                                             "minimum" : 8,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (8 - 32768)"
                                           }
                                        }
                                     },
@@ -35829,14 +38417,14 @@ const apiSchema = [
                                  }
                               },
                               "leaf" : 1,
-                              "path" : "/nodes/{node}/ceph/fs/{name}",
-                              "text" : "{name}"
+                              "path" : "/nodes/{node}/ceph/mgr/{id}",
+                              "text" : "{id}"
                            }
                         ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Directory index.",
+                              "description" : "MGR directory index.",
                               "method" : "GET",
                               "name" : "index",
                               "parameters" : {
@@ -35867,16 +38455,19 @@ const apiSchema = [
                               "returns" : {
                                  "items" : {
                                     "properties" : {
-                                       "data_pool" : {
-                                          "description" : "The name of the data pool.",
+                                       "addr" : {
+                                          "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "metadata_pool" : {
-                                          "description" : "The name of the metadata pool.",
+                                       "host" : {
+                                          "optional" : 1,
                                           "type" : "string"
                                        },
                                        "name" : {
-                                          "description" : "The ceph filesystem name.",
+                                          "description" : "The name (ID) for the MGR"
+                                       },
+                                       "state" : {
+                                          "description" : "State of the MGR",
                                           "type" : "string"
                                        }
                                     },
@@ -35893,250 +38484,31 @@ const apiSchema = [
                            }
                         },
                         "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/fs",
-                        "text" : "fs"
+                        "path" : "/nodes/{node}/ceph/mgr",
+                        "text" : "mgr"
                      },
                      {
                         "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,
-                                    "description" : "Destroy pool",
+                                    "description" : "Destroy Ceph Monitor and Manager.",
                                     "method" : "DELETE",
-                                    "name" : "destroypool",
+                                    "name" : "destroymon",
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
-                                          "force" : {
-                                             "default" : 0,
-                                             "description" : "If true, destroys pool even if in use",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "name" : {
-                                             "description" : "The name of the pool. It must be unique.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                          "monid" : {
+                                             "description" : "Monitor ID",
+                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
+                                             "type" : "string"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
                                              "format" : "pve-node",
                                              "type" : "string",
                                              "typetext" : "<string>"
-                                          },
-                                          "remove_ecprofile" : {
-                                             "default" : 1,
-                                             "description" : "Remove the erasure code profile. Defaults to true, if applicable.",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "remove_storages" : {
-                                             "default" : 0,
-                                             "description" : "Remove all pveceph-managed storages configured for this pool",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
                                           }
                                        }
                                     },
@@ -36155,150 +38527,33 @@ const apiSchema = [
                                        "type" : "string"
                                     }
                                  },
-                                 "GET" : {
-                                    "allowtoken" : 1,
-                                    "description" : "Pool index.",
-                                    "method" : "GET",
-                                    "name" : "poolindex",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "name" : {
-                                             "description" : "The name of the pool.",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "perm",
-                                          "/",
-                                          [
-                                             "Sys.Audit",
-                                             "Datastore.Audit"
-                                          ],
-                                          "any",
-                                          1
-                                       ]
-                                    },
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{name}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 },
-                                 "PUT" : {
+                                 "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Change POOL settings",
-                                    "method" : "PUT",
-                                    "name" : "setpool",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "application" : {
-                                             "description" : "The application of the pool.",
-                                             "enum" : [
-                                                "rbd",
-                                                "cephfs",
-                                                "rgw"
-                                             ],
-                                             "optional" : 1,
-                                             "title" : "Application",
-                                             "type" : "string"
-                                          },
-                                          "crush_rule" : {
-                                             "description" : "The rule to use for mapping object placement in the cluster.",
-                                             "optional" : 1,
-                                             "title" : "Crush Rule Name",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "min_size" : {
-                                             "description" : "Minimum number of replicas per object",
-                                             "maximum" : 7,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "title" : "Min Size",
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 7)"
-                                          },
-                                          "name" : {
-                                             "description" : "The name of the pool. It must be unique.",
-                                             "title" : "Name",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "pg_autoscale_mode" : {
-                                             "description" : "The automatic PG scaling mode of the pool.",
-                                             "enum" : [
-                                                "on",
-                                                "off",
-                                                "warn"
-                                             ],
-                                             "optional" : 1,
-                                             "title" : "PG Autoscale Mode",
-                                             "type" : "string"
-                                          },
-                                          "pg_num" : {
-                                             "description" : "Number of placement groups.",
-                                             "maximum" : 32768,
-                                             "minimum" : 1,
-                                             "optional" : 1,
-                                             "title" : "PG Num",
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 32768)"
-                                          },
-                                          "pg_num_min" : {
-                                             "description" : "Minimal number of placement groups.",
-                                             "maximum" : 32768,
-                                             "optional" : 1,
-                                             "title" : "min. PG Num",
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (-N - 32768)"
-                                          },
-                                          "size" : {
-                                             "description" : "Number of replicas per object",
-                                             "maximum" : 7,
-                                             "minimum" : 1,
+                                    "description" : "Create Ceph Monitor and Manager",
+                                    "method" : "POST",
+                                    "name" : "createmon",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "mon-address" : {
+                                             "description" : "Overwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph.",
+                                             "format" : "ip-list",
                                              "optional" : 1,
-                                             "title" : "Size",
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (1 - 7)"
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           },
-                                          "target_size" : {
-                                             "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                          "monid" : {
+                                             "description" : "The ID for the monitor, when omitted the same as the nodename",
+                                             "maxLength" : 200,
                                              "optional" : 1,
-                                             "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
-                                             "title" : "PG Autoscale Target Size",
+                                             "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?",
                                              "type" : "string"
                                           },
-                                          "target_size_ratio" : {
-                                             "description" : "The estimated target ratio of the pool for the PG autoscaler.",
-                                             "optional" : 1,
-                                             "title" : "PG Autoscale Target Ratio",
-                                             "type" : "number",
-                                             "typetext" : "<number>"
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           }
                                        }
                                     },
@@ -36318,17 +38573,17 @@ const apiSchema = [
                                     }
                                  }
                               },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/ceph/pool/{name}",
-                              "text" : "{name}"
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/mon/{monid}",
+                              "text" : "{monid}"
                            }
                         ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "List all pools and their settings (which are settable by the POST/PUT endpoints).",
+                              "description" : "Get Ceph monitor list.",
                               "method" : "GET",
-                              "name" : "lspools",
+                              "name" : "listmon",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
@@ -36357,84 +38612,43 @@ const apiSchema = [
                               "returns" : {
                                  "items" : {
                                     "properties" : {
-                                       "application_metadata" : {
+                                       "addr" : {
                                           "optional" : 1,
-                                          "title" : "Associated Applications",
-                                          "type" : "object"
+                                          "type" : "string"
                                        },
-                                       "autoscale_status" : {
+                                       "ceph_version" : {
                                           "optional" : 1,
-                                          "title" : "Autoscale Status",
-                                          "type" : "object"
-                                       },
-                                       "bytes_used" : {
-                                          "title" : "Used",
-                                          "type" : "integer"
-                                       },
-                                       "crush_rule" : {
-                                          "title" : "Crush Rule",
-                                          "type" : "integer"
-                                       },
-                                       "crush_rule_name" : {
-                                          "title" : "Crush Rule Name",
                                           "type" : "string"
                                        },
-                                       "min_size" : {
-                                          "title" : "Min Size",
-                                          "type" : "integer"
-                                       },
-                                       "percent_used" : {
-                                          "title" : "%-Used",
-                                          "type" : "number"
-                                       },
-                                       "pg_autoscale_mode" : {
+                                       "ceph_version_short" : {
                                           "optional" : 1,
-                                          "title" : "PG Autoscale Mode",
                                           "type" : "string"
                                        },
-                                       "pg_num" : {
-                                          "title" : "PG Num",
-                                          "type" : "integer"
-                                       },
-                                       "pg_num_final" : {
+                                       "direxists" : {
                                           "optional" : 1,
-                                          "title" : "Optimal PG Num",
-                                          "type" : "integer"
+                                          "type" : "string"
                                        },
-                                       "pg_num_min" : {
+                                       "host" : {
                                           "optional" : 1,
-                                          "title" : "min. PG Num",
-                                          "type" : "integer"
-                                       },
-                                       "pool" : {
-                                          "title" : "ID",
-                                          "type" : "integer"
+                                          "type" : "boolean"
                                        },
-                                       "pool_name" : {
-                                          "title" : "Name",
+                                       "name" : {
                                           "type" : "string"
                                        },
-                                       "size" : {
-                                          "title" : "Size",
-                                          "type" : "integer"
+                                       "quorum" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
                                        },
-                                       "target_size" : {
+                                       "rank" : {
                                           "optional" : 1,
-                                          "title" : "PG Autoscale Target Size",
                                           "type" : "integer"
                                        },
-                                       "target_size_ratio" : {
+                                       "service" : {
                                           "optional" : 1,
-                                          "title" : "PG Autoscale Target Ratio",
-                                          "type" : "number"
+                                          "type" : "integer"
                                        },
-                                       "type" : {
-                                          "enum" : [
-                                             "replicated",
-                                             "erasure",
-                                             "unknown"
-                                          ],
-                                          "title" : "Type",
+                                       "state" : {
+                                          "optional" : 1,
                                           "type" : "string"
                                        }
                                     },
@@ -36442,189 +38656,350 @@ const apiSchema = [
                                  },
                                  "links" : [
                                     {
-                                       "href" : "{pool_name}",
+                                       "href" : "{name}",
                                        "rel" : "child"
                                     }
                                  ],
                                  "type" : "array"
                               }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create Ceph pool",
-                              "method" : "POST",
-                              "name" : "createpool",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storages" : {
-                                       "default" : "0; for erasure coded pools: 1",
-                                       "description" : "Configure VM and CT storage using the new pool.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "application" : {
-                                       "default" : "rbd",
-                                       "description" : "The application of the pool.",
-                                       "enum" : [
-                                          "rbd",
-                                          "cephfs",
-                                          "rgw"
-                                       ],
-                                       "optional" : 1,
-                                       "title" : "Application",
-                                       "type" : "string"
-                                    },
-                                    "crush_rule" : {
-                                       "description" : "The rule to use for mapping object placement in the cluster.",
-                                       "optional" : 1,
-                                       "title" : "Crush Rule Name",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "erasure-coding" : {
-                                       "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
-                                       "format" : {
-                                          "device-class" : {
-                                             "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "class",
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/mon",
+                        "text" : "mon"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Create a Ceph filesystem",
+                                    "method" : "POST",
+                                    "name" : "createfs",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "add-storage" : {
+                                             "default" : 0,
+                                             "description" : "Configure the created CephFS as storage for this cluster.",
                                              "optional" : 1,
-                                             "type" : "string"
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
                                           },
-                                          "failure-domain" : {
-                                             "default" : "host",
-                                             "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "domain",
+                                          "name" : {
+                                             "default" : "cephfs",
+                                             "description" : "The ceph filesystem name.",
                                              "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "k" : {
-                                             "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 2,
-                                             "type" : "integer"
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           },
-                                          "m" : {
-                                             "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 1,
-                                             "type" : "integer"
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           },
-                                          "profile" : {
-                                             "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "profile",
+                                          "pg_num" : {
+                                             "default" : 128,
+                                             "description" : "Number of placement groups for the backing data pool. The metadata pool will use a quarter of this.",
+                                             "maximum" : 32768,
+                                             "minimum" : 8,
                                              "optional" : 1,
-                                             "type" : "string"
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (8 - 32768)"
                                           }
-                                       },
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
-                                    },
-                                    "min_size" : {
-                                       "default" : 2,
-                                       "description" : "Minimum number of replicas per object",
-                                       "maximum" : 7,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "Min Size",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 7)"
+                                       }
                                     },
-                                    "name" : {
-                                       "description" : "The name of the pool. It must be unique.",
-                                       "title" : "Name",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
                                     },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/fs/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Directory index.",
+                              "method" : "GET",
+                              "name" : "index",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit",
+                                       "Datastore.Audit"
+                                    ],
+                                    "any",
+                                    1
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "data_pool" : {
+                                          "description" : "The name of the data pool.",
+                                          "type" : "string"
+                                       },
+                                       "metadata_pool" : {
+                                          "description" : "The name of the metadata pool.",
+                                          "type" : "string"
+                                       },
+                                       "name" : {
+                                          "description" : "The ceph filesystem name.",
+                                          "type" : "string"
+                                       }
                                     },
-                                    "pg_autoscale_mode" : {
-                                       "default" : "warn",
-                                       "description" : "The automatic PG scaling mode of the pool.",
-                                       "enum" : [
-                                          "on",
-                                          "off",
-                                          "warn"
-                                       ],
-                                       "optional" : 1,
-                                       "title" : "PG Autoscale Mode",
-                                       "type" : "string"
-                                    },
-                                    "pg_num" : {
-                                       "default" : 128,
-                                       "description" : "Number of placement groups.",
-                                       "maximum" : 32768,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "PG Num",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 32768)"
-                                    },
-                                    "pg_num_min" : {
-                                       "description" : "Minimal number of placement groups.",
-                                       "maximum" : 32768,
-                                       "optional" : 1,
-                                       "title" : "min. PG Num",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (-N - 32768)"
-                                    },
-                                    "size" : {
-                                       "default" : 3,
-                                       "description" : "Number of replicas per object",
-                                       "maximum" : 7,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "Size",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 7)"
-                                    },
-                                    "target_size" : {
-                                       "description" : "The estimated target size of the pool for the PG autoscaler.",
-                                       "optional" : 1,
-                                       "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
-                                       "title" : "PG Autoscale Target Size",
-                                       "type" : "string"
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/fs",
+                        "text" : "fs"
+                     },
+                     {
+                        "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"
+                                          }
+                                       }
                                     },
-                                    "target_size_ratio" : {
-                                       "description" : "The estimated target ratio of the pool for the PG autoscaler.",
-                                       "optional" : 1,
-                                       "title" : "PG Autoscale Target Ratio",
-                                       "type" : "number",
-                                       "typetext" : "<number>"
-                                    }
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/pool/{name}/status",
+                                    "text" : "status"
                                  }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/pool",
-                        "text" : "pool"
-                     },
-                     {
-                        "children" : [
-                           {
+                              ],
                               "info" : {
                                  "DELETE" : {
                                     "allowtoken" : 1,
-                                    "description" : "Destroy pool. Deprecated, please use `/nodes/{node}/ceph/pool/{name}`.",
+                                    "description" : "Destroy pool",
                                     "method" : "DELETE",
                                     "name" : "destroypool",
                                     "parameters" : {
@@ -36681,14 +39056,14 @@ const apiSchema = [
                                  },
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "List pool settings. Deprecated, please use `/nodes/{node}/ceph/pool/{pool}/status`.",
+                                    "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>"
                                           },
@@ -36697,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>"
                                           }
                                        }
                                     },
@@ -36719,158 +39087,23 @@ 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" : {
                                     "allowtoken" : 1,
-                                    "description" : "Change POOL settings. Deprecated, please use `/nodes/{node}/ceph/pool/{name}`.",
+                                    "description" : "Change POOL settings",
                                     "method" : "PUT",
                                     "name" : "setpool",
                                     "parameters" : {
@@ -36984,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. Deprecated, please use `/nodes/{node}/ceph/pool`.",
+                              "description" : "List all pools and their settings (which are settable by the POST/PUT endpoints).",
                               "method" : "GET",
                               "name" : "lspools",
                               "parameters" : {
@@ -37018,327 +39251,249 @@ const apiSchema = [
                                     1
                                  ]
                               },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "application_metadata" : {
-                                          "optional" : 1,
-                                          "title" : "Associated Applications",
-                                          "type" : "object"
-                                       },
-                                       "autoscale_status" : {
-                                          "optional" : 1,
-                                          "title" : "Autoscale Status",
-                                          "type" : "object"
-                                       },
-                                       "bytes_used" : {
-                                          "title" : "Used",
-                                          "type" : "integer"
-                                       },
-                                       "crush_rule" : {
-                                          "title" : "Crush Rule",
-                                          "type" : "integer"
-                                       },
-                                       "crush_rule_name" : {
-                                          "title" : "Crush Rule Name",
-                                          "type" : "string"
-                                       },
-                                       "min_size" : {
-                                          "title" : "Min Size",
-                                          "type" : "integer"
-                                       },
-                                       "percent_used" : {
-                                          "title" : "%-Used",
-                                          "type" : "number"
-                                       },
-                                       "pg_autoscale_mode" : {
-                                          "optional" : 1,
-                                          "title" : "PG Autoscale Mode",
-                                          "type" : "string"
-                                       },
-                                       "pg_num" : {
-                                          "title" : "PG Num",
-                                          "type" : "integer"
-                                       },
-                                       "pg_num_final" : {
-                                          "optional" : 1,
-                                          "title" : "Optimal PG Num",
-                                          "type" : "integer"
-                                       },
-                                       "pg_num_min" : {
-                                          "optional" : 1,
-                                          "title" : "min. PG Num",
-                                          "type" : "integer"
-                                       },
-                                       "pool" : {
-                                          "title" : "ID",
-                                          "type" : "integer"
-                                       },
-                                       "pool_name" : {
-                                          "title" : "Name",
-                                          "type" : "string"
-                                       },
-                                       "size" : {
-                                          "title" : "Size",
-                                          "type" : "integer"
-                                       },
-                                       "target_size" : {
-                                          "optional" : 1,
-                                          "title" : "PG Autoscale Target Size",
-                                          "type" : "integer"
-                                       },
-                                       "target_size_ratio" : {
-                                          "optional" : 1,
-                                          "title" : "PG Autoscale Target Ratio",
-                                          "type" : "number"
-                                       },
-                                       "type" : {
-                                          "enum" : [
-                                             "replicated",
-                                             "erasure",
-                                             "unknown"
-                                          ],
-                                          "title" : "Type",
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{pool_name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Create Ceph pool. Deprecated, please use `/nodes/{node}/ceph/pool`.",
-                              "method" : "POST",
-                              "name" : "createpool",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "add_storages" : {
-                                       "default" : "0; for erasure coded pools: 1",
-                                       "description" : "Configure VM and CT storage using the new pool.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "application" : {
-                                       "default" : "rbd",
-                                       "description" : "The application of the pool.",
-                                       "enum" : [
-                                          "rbd",
-                                          "cephfs",
-                                          "rgw"
-                                       ],
-                                       "optional" : 1,
-                                       "title" : "Application",
-                                       "type" : "string"
-                                    },
-                                    "crush_rule" : {
-                                       "description" : "The rule to use for mapping object placement in the cluster.",
-                                       "optional" : 1,
-                                       "title" : "Crush Rule Name",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "erasure-coding" : {
-                                       "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
-                                       "format" : {
-                                          "device-class" : {
-                                             "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "class",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "failure-domain" : {
-                                             "default" : "host",
-                                             "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "domain",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "k" : {
-                                             "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 2,
-                                             "type" : "integer"
-                                          },
-                                          "m" : {
-                                             "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "minimum" : 1,
-                                             "type" : "integer"
-                                          },
-                                          "profile" : {
-                                             "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
-                                             "format_description" : "profile",
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
-                                    },
-                                    "min_size" : {
-                                       "default" : 2,
-                                       "description" : "Minimum number of replicas per object",
-                                       "maximum" : 7,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "Min Size",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 7)"
-                                    },
-                                    "name" : {
-                                       "description" : "The name of the pool. It must be unique.",
-                                       "title" : "Name",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "pg_autoscale_mode" : {
-                                       "default" : "warn",
-                                       "description" : "The automatic PG scaling mode of the pool.",
-                                       "enum" : [
-                                          "on",
-                                          "off",
-                                          "warn"
-                                       ],
-                                       "optional" : 1,
-                                       "title" : "PG Autoscale Mode",
-                                       "type" : "string"
-                                    },
-                                    "pg_num" : {
-                                       "default" : 128,
-                                       "description" : "Number of placement groups.",
-                                       "maximum" : 32768,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "PG Num",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 32768)"
-                                    },
-                                    "pg_num_min" : {
-                                       "description" : "Minimal number of placement groups.",
-                                       "maximum" : 32768,
-                                       "optional" : 1,
-                                       "title" : "min. PG Num",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (-N - 32768)"
-                                    },
-                                    "size" : {
-                                       "default" : 3,
-                                       "description" : "Number of replicas per object",
-                                       "maximum" : 7,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "title" : "Size",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 7)"
-                                    },
-                                    "target_size" : {
-                                       "description" : "The estimated target size of the pool for the PG autoscaler.",
-                                       "optional" : 1,
-                                       "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
-                                       "title" : "PG Autoscale Target Size",
-                                       "type" : "string"
-                                    },
-                                    "target_size_ratio" : {
-                                       "description" : "The estimated target ratio of the pool for the PG autoscaler.",
-                                       "optional" : 1,
-                                       "title" : "PG Autoscale Target Ratio",
-                                       "type" : "number",
-                                       "typetext" : "<number>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/ceph/pools",
-                        "text" : "pools"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get the Ceph configuration file. Deprecated, please use `/nodes/{node}/ceph/cfg/raw.",
-                              "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
-                                 ]
-                              },
+                              "protected" : 1,
                               "proxyto" : "node",
                               "returns" : {
-                                 "type" : "string"
+                                 "items" : {
+                                    "properties" : {
+                                       "application_metadata" : {
+                                          "optional" : 1,
+                                          "title" : "Associated Applications",
+                                          "type" : "object"
+                                       },
+                                       "autoscale_status" : {
+                                          "optional" : 1,
+                                          "title" : "Autoscale Status",
+                                          "type" : "object"
+                                       },
+                                       "bytes_used" : {
+                                          "title" : "Used",
+                                          "type" : "integer"
+                                       },
+                                       "crush_rule" : {
+                                          "title" : "Crush Rule",
+                                          "type" : "integer"
+                                       },
+                                       "crush_rule_name" : {
+                                          "title" : "Crush Rule Name",
+                                          "type" : "string"
+                                       },
+                                       "min_size" : {
+                                          "title" : "Min Size",
+                                          "type" : "integer"
+                                       },
+                                       "percent_used" : {
+                                          "title" : "%-Used",
+                                          "type" : "number"
+                                       },
+                                       "pg_autoscale_mode" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Mode",
+                                          "type" : "string"
+                                       },
+                                       "pg_num" : {
+                                          "title" : "PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pg_num_final" : {
+                                          "optional" : 1,
+                                          "title" : "Optimal PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pg_num_min" : {
+                                          "optional" : 1,
+                                          "title" : "min. PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pool" : {
+                                          "title" : "ID",
+                                          "type" : "integer"
+                                       },
+                                       "pool_name" : {
+                                          "title" : "Name",
+                                          "type" : "string"
+                                       },
+                                       "size" : {
+                                          "title" : "Size",
+                                          "type" : "integer"
+                                       },
+                                       "target_size" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Target Size",
+                                          "type" : "integer"
+                                       },
+                                       "target_size_ratio" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Target Ratio",
+                                          "type" : "number"
+                                       },
+                                       "type" : {
+                                          "enum" : [
+                                             "replicated",
+                                             "erasure",
+                                             "unknown"
+                                          ],
+                                          "title" : "Type",
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{pool_name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
                               }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/config",
-                        "text" : "config"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
+                           },
+                           "POST" : {
                               "allowtoken" : 1,
-                              "description" : "Get the Ceph configuration database. Deprecated, please use `/nodes/{node}/ceph/cfg/db.",
-                              "method" : "GET",
-                              "name" : "configdb",
+                              "description" : "Create Ceph pool",
+                              "method" : "POST",
+                              "name" : "createpool",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
+                                    "add_storages" : {
+                                       "default" : "0; for erasure coded pools: 1",
+                                       "description" : "Configure VM and CT storage using the new pool.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "application" : {
+                                       "default" : "rbd",
+                                       "description" : "The application of the pool.",
+                                       "enum" : [
+                                          "rbd",
+                                          "cephfs",
+                                          "rgw"
+                                       ],
+                                       "optional" : 1,
+                                       "title" : "Application",
+                                       "type" : "string"
+                                    },
+                                    "crush_rule" : {
+                                       "description" : "The rule to use for mapping object placement in the cluster.",
+                                       "optional" : 1,
+                                       "title" : "Crush Rule Name",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "erasure-coding" : {
+                                       "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
+                                       "format" : {
+                                          "device-class" : {
+                                             "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "class",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "failure-domain" : {
+                                             "default" : "host",
+                                             "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "domain",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "k" : {
+                                             "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "minimum" : 2,
+                                             "type" : "integer"
+                                          },
+                                          "m" : {
+                                             "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "minimum" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "profile" : {
+                                             "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "profile",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
+                                    },
+                                    "min_size" : {
+                                       "default" : 2,
+                                       "description" : "Minimum number of replicas per object",
+                                       "maximum" : 7,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "Min Size",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 7)"
+                                    },
+                                    "name" : {
+                                       "description" : "The name of the pool. It must be unique.",
+                                       "title" : "Name",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    },
+                                    "pg_autoscale_mode" : {
+                                       "default" : "warn",
+                                       "description" : "The automatic PG scaling mode of the pool.",
+                                       "enum" : [
+                                          "on",
+                                          "off",
+                                          "warn"
+                                       ],
+                                       "optional" : 1,
+                                       "title" : "PG Autoscale Mode",
+                                       "type" : "string"
+                                    },
+                                    "pg_num" : {
+                                       "default" : 128,
+                                       "description" : "Number of placement groups.",
+                                       "maximum" : 32768,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "PG Num",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 32768)"
+                                    },
+                                    "pg_num_min" : {
+                                       "description" : "Minimal number of placement groups.",
+                                       "maximum" : 32768,
+                                       "optional" : 1,
+                                       "title" : "min. PG Num",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (-N - 32768)"
+                                    },
+                                    "size" : {
+                                       "default" : 3,
+                                       "description" : "Number of replicas per object",
+                                       "maximum" : 7,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "Size",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 7)"
+                                    },
+                                    "target_size" : {
+                                       "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                       "optional" : 1,
+                                       "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+                                       "title" : "PG Autoscale Target Size",
+                                       "type" : "string"
+                                    },
+                                    "target_size_ratio" : {
+                                       "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+                                       "optional" : 1,
+                                       "title" : "PG Autoscale Target Ratio",
+                                       "type" : "number",
+                                       "typetext" : "<number>"
                                     }
                                  }
                               },
@@ -37347,46 +39502,20 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
-                                       "Sys.Audit",
-                                       "Datastore.Audit"
-                                    ],
-                                    "any",
-                                    1
+                                       "Sys.Modify"
+                                    ]
                                  ]
                               },
                               "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"
+                                 "type" : "string"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/ceph/configdb",
-                        "text" : "configdb"
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/pool",
+                        "text" : "pool"
                      },
                      {
                         "info" : {
@@ -37439,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,
@@ -37954,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>"
                                     }
                                  }
                               },
@@ -38006,13 +40136,19 @@ 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.",
+                                       "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 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.",
@@ -38030,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"
@@ -38039,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"
@@ -38074,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",
@@ -38143,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"
                                     },
@@ -38159,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"
                                     }
@@ -38262,7 +40427,7 @@ 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.",
+                                 "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"
                                  },
@@ -38270,6 +40435,13 @@ const apiSchema = [
                                  "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>]"
+                              },
                               "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.",
@@ -38289,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"
@@ -38298,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",
@@ -38337,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,
@@ -38423,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.",
@@ -38442,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>"
@@ -38450,7 +40652,7 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. 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 '/'.",
+                           "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,
@@ -39012,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" : {
@@ -41239,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.",
@@ -41296,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.",
@@ -41403,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",
@@ -41442,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",
@@ -41510,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",
@@ -41568,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",
@@ -41620,8 +43828,9 @@ 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",
@@ -41765,8 +43974,9 @@ 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",
@@ -41825,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.",
@@ -41905,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.",
@@ -41954,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>"
                                           }
                                        }
                                     },
@@ -42016,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.",
@@ -42088,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.",
@@ -42186,8 +44408,9 @@ 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.",
@@ -42247,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" : [
@@ -42271,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.",
@@ -42299,14 +44530,25 @@ const apiSchema = [
                                              ]
                                           ],
                                           [
-                                             "perm",
-                                             "/",
+                                             "or",
+                                             [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit",
+                                                   "Sys.Modify"
+                                                ]
+                                             ],
                                              [
-                                                "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",
@@ -42318,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" : {
@@ -42338,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>"
                                     }
                                  }
                               },
@@ -42418,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.",
@@ -42469,6 +44826,7 @@ const apiSchema = [
                                  "storage" : {
                                     "description" : "The storage identifier.",
                                     "format" : "pve-storage-id",
+                                    "format_description" : "storage ID",
                                     "type" : "string"
                                  },
                                  "total" : {
@@ -42541,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.",
@@ -42682,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.",
@@ -42743,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.",
@@ -42755,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>"
                                           }
                                        }
                                     },
@@ -42866,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.",
@@ -42927,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.",
@@ -43050,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.",
@@ -43111,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.",
@@ -43149,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.",
@@ -43380,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.",
@@ -43513,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,
@@ -43794,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>"
@@ -44292,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>"
@@ -44474,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>"
@@ -44684,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>"
@@ -44924,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,
@@ -45005,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>"
@@ -45103,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",
@@ -46140,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"
                               }
@@ -46247,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>]"
                               }
                            }
                         },
@@ -46582,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"
                         }
                      },
@@ -47046,7 +49525,7 @@ 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",
@@ -47100,8 +49579,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "returns" : {
@@ -47142,7 +49620,7 @@ 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",
@@ -47174,8 +49652,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "returns" : {
@@ -47240,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" : {
@@ -47268,7 +49745,7 @@ 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",
@@ -47307,8 +49784,7 @@ const apiSchema = [
                               [
                                  "Sys.Console"
                               ]
-                           ],
-                           "description" : "Restricted to users on realm 'pam'"
+                           ]
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -47595,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",
@@ -47658,11 +50135,21 @@ const apiSchema = [
                         },
                         "permissions" : {
                            "check" : [
-                              "perm",
-                              "/",
+                              "or",
                               [
-                                 "Sys.Audit",
-                                 "Sys.Modify"
+                                 "perm",
+                                 "/",
+                                 [
+                                    "Sys.Audit",
+                                    "Sys.Modify"
+                                 ]
+                              ],
+                              [
+                                 "perm",
+                                 "/nodes/{node}",
+                                 [
+                                    "Sys.AccessNetwork"
+                                 ]
                               ]
                            ]
                         },
@@ -47832,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" : {
@@ -47927,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"
                               }
@@ -47950,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>"
@@ -48125,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>"
                         }
                      }
                   },
@@ -48155,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>"
                         }
                      }
                   },
@@ -48285,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>"
@@ -48417,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",
@@ -48450,7 +50979,6 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "port" : {
-                           "default" : 8007,
                            "description" : "For non default port.",
                            "maximum" : 65535,
                            "minimum" : 1,
@@ -48505,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>"
@@ -48533,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.",
@@ -48604,6 +51140,7 @@ const apiSchema = [
                               "cephfs",
                               "cifs",
                               "dir",
+                              "esxi",
                               "glusterfs",
                               "iscsi",
                               "iscsidirect",
@@ -48643,6 +51180,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -48942,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",
@@ -48982,7 +51520,6 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "port" : {
-                     "default" : 8007,
                      "description" : "For non default port.",
                      "maximum" : 65535,
                      "minimum" : 1,
@@ -49050,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>"
@@ -49078,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.",
@@ -49124,6 +51669,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -49195,6 +51741,7 @@ const apiSchema = [
                         "cephfs",
                         "cifs",
                         "dir",
+                        "esxi",
                         "glusterfs",
                         "iscsi",
                         "iscsidirect",
@@ -49783,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"
                               },
@@ -49804,6 +52353,7 @@ const apiSchema = [
                                  "type" : "integer"
                               },
                               "firstname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string"
                               },
@@ -49818,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"
                               },
@@ -49869,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>"
@@ -49894,6 +52448,7 @@ const apiSchema = [
                                  "typetext" : "<integer> (0 - N)"
                               },
                               "firstname" : {
+                                 "maxLength" : 1024,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -49907,10 +52462,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>"
@@ -49978,11 +52534,13 @@ const apiSchema = [
                      "items" : {
                         "properties" : {
                            "comment" : {
+                              "maxLength" : 2048,
                               "optional" : 1,
                               "type" : "string"
                            },
                            "email" : {
                               "format" : "email-opt",
+                              "maxLength" : 254,
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -49999,6 +52557,7 @@ const apiSchema = [
                               "type" : "integer"
                            },
                            "firstname" : {
+                              "maxLength" : 1024,
                               "optional" : 1,
                               "type" : "string"
                            },
@@ -50010,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"
                            },
@@ -50090,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>"
@@ -50115,6 +52678,7 @@ const apiSchema = [
                            "typetext" : "<integer> (0 - N)"
                         },
                         "firstname" : {
+                           "maxLength" : 1024,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -50128,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>"
@@ -50500,6 +53065,10 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "boolean"
                               },
+                              "Sys.AccessNetwork" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
                               "Sys.Audit" : {
                                  "optional" : 1,
                                  "type" : "boolean"
@@ -51024,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,
@@ -51038,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",
@@ -51074,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,
@@ -51110,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>"
@@ -51142,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.",
@@ -51370,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,
@@ -51384,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",
@@ -51420,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,
@@ -51473,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.",
@@ -51815,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,
@@ -51852,7 +54435,7 @@ const apiSchema = [
                               }
                            },
                            "GET" : {
-                              "allowtoken" : 0,
+                              "allowtoken" : 1,
                               "description" : "Fetch a requested TFA entry if present.",
                               "method" : "GET",
                               "name" : "get_tfa_entry",
@@ -51953,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,
@@ -51997,7 +54580,7 @@ const apiSchema = [
                   ],
                   "info" : {
                      "GET" : {
-                        "allowtoken" : 0,
+                        "allowtoken" : 1,
                         "description" : "List TFA configurations of users.",
                         "method" : "GET",
                         "name" : "list_user_tfa",
@@ -52067,6 +54650,12 @@ const apiSchema = [
                               },
                               "type" : "object"
                            },
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
                            "type" : "array"
                         }
                      },
@@ -52092,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,
@@ -52179,7 +54768,7 @@ const apiSchema = [
             ],
             "info" : {
                "GET" : {
-                  "allowtoken" : 0,
+                  "allowtoken" : 1,
                   "description" : "List TFA configurations of users.",
                   "method" : "GET",
                   "name" : "list_tfa",
@@ -52250,6 +54839,12 @@ const apiSchema = [
                         },
                         "type" : "object"
                      },
+                     "links" : [
+                        {
+                           "href" : "{userid}",
+                           "rel" : "child"
+                        }
+                     ],
                      "type" : "array"
                   }
                }
@@ -52381,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,
@@ -52510,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" : {
@@ -52540,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" : {
@@ -52616,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>"
@@ -52639,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",
@@ -52676,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"
                      }
@@ -52739,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,